出现这个原因是因为,我们之前有执行过初始化的命令,然后初始化的时候就会产生一些文件,和占用端口,然后当你再次初始化的时候,就会提示你有些文件已经存在和端口正在被使用,所以我们要把这些文件删掉,和端口给杀死
#删除文件
rm -rf /etc/kubernetes/mainfests/*
rm -rf /var/lob/etcd
#杀死被占用的端口,我们使用lsof,如果没有的话,先去下载
yum install lsof
lsof -i:10250 #查看10250端口的占用情况
同样的,当我们加入节点的时候,也会遇到类似初始化节点一样的问题,我们也是删除文件和杀死端口再次加入节点就可以
如下面,我们发送k8s的scheduler提示unhealthy,这个时候应该怎么办呢?
解决方法
vim /etc/kubernetes/manifests/kube-scheduler.yaml
# - --port=0 #这一行注释掉,然后重启就可以
systemctl restart kubelet
编辑文件
[root@k8s151 ~]$ vim /etc/kubernetes/manifests/kube-controller-manager.yaml
......
# - --port=0 #找到这个port=0并注释
注释后重启
[root@k8s151 ~]$ systemctl restart kubelet
检查一下,已经好了
[root@k8s151 ~]$ kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
下面这个是152节点没有准备好
一般如果是第一次部署k8s,遇到这种问题,多半是flanne的问题,下面这个命令,其实就是创建flannel组件,这个文件其实就是
创建一些cni,也就是实现flannel的pod,所以我们要想知道flannel是否部署成功了,需要去使用 kubectl get pods --all-namespaces 查看一下
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
从上图我们可以看到,这个152节点,没有成功的部署flannel,我们去查看详细的信息看看问题在哪
[root@k8s151 ~]# kubectl describe pods kube-flannel-ds-wwdq7 -n kube-flannel
我们从上图的结果可以看到,是因为152这个节点下载镜像失败了,我们只需要把这个镜像下载到152节点就能解决问题了。 为什么会出现这个问题呢,因为这个镜像地址,默认是从国外网址下载的,有时候我们的电脑是不能访问外网的,我们想要解决这个问题
1 使用,重新试试,或者可以直接在节点使用docker pull下载镜像,可以访问外网,也就能下载成功了
[root@k8s152 ~]# docker pull docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2
2 找找看有没有镜像包,然后使用docker load导入镜像就可以了
比如我们别的节点是把这个镜像下载成功了,我们就可以把这个镜像打包,然后传到没有下载成功镜像再导入
[root@k8s153 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rancher/mirrored-flannelcni-flannel-cni-plugin v1.1.2 7a2dcab94698 4 weeks ago 7.97MB
rancher/mirrored-flannelcni-flannel v0.20.2 b5c6c9203f83 5 weeks ago 59.6MB
registry.aliyuncs.com/google_containers/kube-proxy v1.22.0 bbad1636b30d 17 months ago 104MB
registry.aliyuncs.com/google_containers/pause 3.5 ed210e3e4a5b 22 months ago 683kB
registry.aliyuncs.com/google_containers/kube-proxy v1.15.12 00206e1127f2 2 years ago 82.5MB
registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 5 years ago 742kB
把这两个和flannel相关的镜像打包
[root@k8s153 ~]# docker save rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.2 -o flannel-cni.tar.gz
[root@k8s153 ~]# docker save rancher/mirrored-flannel-plugin:v0.20.2 -o flannel.tar.gz
发送到失败的节点上152的~文件中
[root@k8s153 ~]# scp flannel.tar.gz 10.0.0.152:~
[root@k8s153 ~]# scp flannel-cni.tar.gz 10.0.0.152:~
[root@k8s152 ~]# ls
flannel.tar.gz
flannel-cni.tar.gz
导入镜像
[root@k8s152 ~]# docker load -i flannel.tar.gz
[root@k8s152 ~]# docker load -i flannel-cni.tar.gz
3 可以试试镜像加速,就是把国外的源换成本地的阿里云
下载成功后,再次查看,节点已经变为ready
部署的PVC 和 PV 已经是处于绑定状态了,这个是时候是无法删除的,如果去删除就会一直Terminating状态
[root@k8s151 /k8s-manifests/cicd/gitlab]$ kubectl -n devops-tools get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
gitlabt 10Gi RWX Delete Terminating kube-ops/gitlabt 38h
postsql 10Gi RWX Delete Terminating kube-ops/postsql 38h
这个时候可以通过编辑 PV,删除 PV 中的 finalizers 属性来强制删除 PV:
[root@k8s151 /k8s-manifests/cicd/gitlab]$ kubectl edit pv gitlabt
....
finalizers:
- kubernetes.io/pv-protection
....
# 按照下面所示删除 finalizers 属性中的内容,就是删除上面两行就可以