写在前面
本文暂无理论,如果按照文章安装应该没有异常,但不排除环境导致,本着先安装在实践中不断地学习的原则,写下这篇文章,文中部分来自于互联网的故障处理办法,基于kubeadm安装,如果错误,请及时指出。
正文
环境
- 系统环境:CentOS 7.5
- master:192.168.31.55
- node:192.168.31.61
- Kubernetes版本:1.20.5
kubeadm安装
1.添加国内源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
2.安装kubeadm
yum -y install kubelet kubeadm kubectl docker
- 1.
3.查看镜像版本
kubeadm config images list
- 1.
4.编辑安装脚本
images=(
kube-apiserver:v1.20.5
kube-controller-manager:v1.20.5
kube-scheduler:v1.20.5
kube-proxy:v1.20.5
pause:3.2
etcd:3.4.13-0
coredns:1.7.0
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
5.出现下图,开启docker服务。
systemctl start docker && systemctl enable docker
- 1.
kubeadm初始化集群
kubeadm init --pod-network-cidr=172.17.0.0/16
- 1.
关闭swap分区
swapoff -a
- 1.
出现异常
docker状态异常
docker logs [你的docker id]
- 1.
查看docker日志
####这里多半为selinux未关闭####
vim /etc/selinux/config
- 1.
- 2.
reboot
kubeadm reset
- 1.
- 2.
hosts文件未写
添加hosts文件记录

初始化成功

如果出现该错误请执行下列命令
增加管理配置文件变量
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
- 1.
- 2.
- 3.
解决NotReady问题

安装flannel
如果出现超时,可以直接访问连接,直接复制粘贴,手工创建yaml文件(实在无法访问,可以私信我)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 1.
增加node节点
1.关闭selinux和swap(略,如上)
2.导入阿里源(略,如上)
3.安装kubeadm
4.加入K8S集群
前提条件为hosts文件已经添加,docker服务启动(systemctl enable docker && systemctl start docker)

####在master获取token及加入命令####
kubeadm token create --print-join-command
####在node执行接口####
kubeadm join 192.168.31.55:6443 --token phuth9.n4lajzj9fx4fxvsr --discovery-token-ca-cert-hash sha256:47860bea93955508dbf06ef8a62a3d97b02fead4f4160e3cfb1c246067c041d9
- 1.
- 2.
- 3.
- 4.
获取加入命令

此时加入成功

但此时状态一直未Notready
查看kube-system下pod的情况,发现此时状态为异常状态
kubectl get pods -n kube-system
- 1.
异常pod
####查看详细信息,主要是报错信息####
kubectl describe pod kube-flannel-ds-tllzn --namespace=kube-system
- 1.
- 2.
在node节点主动拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
- 1.
在master节点查看相关镜像名称及标签,调整node节点标签
####记住是主节点执行该命令####
docker image list
- 1.
- 2.
修改tag与master节点一致
####记住在node节点操作####
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
- 1.
- 2.
修改标签
此时正常
再查看相关状态,发现kube-proxy依然有点问题,继续查看

状态异常
因为超时,同样的方法处理
同样的方法
查看此时的状态,应该都是正常的
node正常
pod正常
总结
整体下来花费的时长比较长,过程不算曲折,node节点较折腾,但是官方文档还算是给力,另外测试时间比较久,初学不久,如果错误请包涵,共勉。