- 前提条件
0.0 环境准备
0.1 安装docker - 配置源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
输入指令
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 安装(需要指定旧版本,否则后面阿里云镜像中部分新版本可能获取不到)
yum install -y kubelet kubeadm kubectl
yum install -y kubelet-1.19.8 kubectl-1.19.8 kubeadm-1.19.8
- 启动kubelet并设置开机启动
systemctl enable kubelet && systemctl start kubelet
- kubeadm初始化
使用calico作为网络插件(–pod-network-cidr=192.168.0.0/16)
如果是单核CPU需要加参数(–ignore-preflight-errors=NumCPU)
kubeadm init
注:如未开启bridge-nf-call-iptables,必须要修改配置为开启状态,原因
[preflight] Some fatal errors occurred:
/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
解决方案:
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
kubeadm init --ignore-preflight-errors=NumCPU --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.19.8 --pod-network-cidr=192.168.0.0/16
拷贝kubectl使用的连接k8s认证文件到默认路径
根据init时的提示执行如下指令(如果执行了kubeadm reset命令,需要手动删除.kube目录再重新执行操作:rm -rf $HOME/.kube)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
执行查看状态,此时为 NotReady
按照提示(提示在kubeadm init的output最后), 需要初始化虚拟网络
我们在浏览器中输入https://8.130.177.188:6443来验证一下是否部署成功,返回如下:
{
“kind”: “Status”,
“apiVersion”: “v1”,
“metadata”: {
},
“status”: “Failure”,
“message”: “forbidden: User “system:anonymous” cannot get path “/””,
“reason”: “Forbidden”,
“details”: {
},
“code”: 403
}
确认调度器正常:
kubectl get cs
如果scheduler和controller-manager都为Unhealthy,将port=0这行注释掉
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
systemctl restart kubelet.service
再次确认调度器正常:
kubectl get cs
安装网络插件:
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
执行
kubectl get pods -A
查看tigera-operator及所有的pod已经ready,如果没有可以加watch命令监控一直到ready为止
执行
kubectl get nodes
查看maste此时已经为Ready
开启master节点允许部署pod:
kubectl taint nodes --all node-role.kubernetes.io/master-
- 卸载集群
想要撤销kubeadm做的事,首先要排除节点,并确保在关闭节点之前要清空节点。
在主节点上运行:
kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>
然后在需要移除的节点上,重置kubeadm的安装状态:
kubeadm reset
rm -rf $HOME/.kube