1、安装 Docker
1. 添加依赖源
$ curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
2. 安装Docker
$ yum -y install docker-ce
3. 设置Docker开机自启动
$ systemctl enable --now docker
$ systemctl enable docker.service
4. 设置阿里云镜像源加速
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ie2mtbp8.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
2、安装 K8s
1. 添加依赖源
$ cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
2. 安装kubeadm
$ yum install -y kubelet kubeadm kubectl
3. 设置Kubelet开机自启动
$ systemctl enable kubelet.service
4. 下载镜像
在墙外,需要科学上网
$ kubeadm config images pull
5. 禁用Swap
$ vim /etc/fstab
/dev/mapper/cl-swap >> # /dev/mapper/cl-swap
$ echo vm.swappiness=0 >> /etc/sysctl.conf
6. Docker设置Systemd
$ vim /etc/docker/daemon.json
"exec-opts": ["native.cgroupdriver=systemd"]
7. 初始化
$ kubeadm init --pod-network-cidr=10.11.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
8. 安装 flannel
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
9. master 允许调度
默认安装好后为master,并且有个taint不允许调度,如需master当作node可去除该taint即可
kubectl taint nodes --all node-role.kubernetes.io/master-
10. 修改端口范围
默认端口范围为30000-32767
修改配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml
$ - command:
- kube-apiserver
# 添加如下一行
- --service-node-port-range=1-65535
11. 开启路由转发
$ vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
2、K8s集群
1. join master
在其他服务器上安装kubeadm,然后安装master上init后的提示kubeadm join….
kubeadm join 192.168.66.211:6443 --token ynw3rv.du4nm0ef6djh3293 --discovery-token-ca-cert-hash sha256:e639aa22ea901ab8956ea40069f36b30df72d9999b42144a610c73fa70485b2e
注意:token仅24小时有效,过期后需要重新生成,这里提供一个脚本在过期后一键生成
#!/bin/bash
if [ $EUID -ne 0 ];then
echo "must be root (or sudo) to run this script"
exit 1
fi
if [ $# != 1 ] ; then
echo "must input a param master-hostname | master-ip-address"
echo " e.g.: 192.168.66.66 or k8s.aispring.cloud"
exit 1;
fi
token=`kubeadm token create`
cert_hash=`openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'`
echo "Refer the following command to join kubernetes cluster:"
echo "kubeadm join $1:6443 --token ${token} --discovery-token-ca-cert-hash sha256:${cert_hash}"
./generate_join_master.sh 192.168.66.211