k8s常见错误

master节点初始化失败 

出现这个原因是因为,我们之前有执行过初始化的命令,然后初始化的时候就会产生一些文件,和占用端口,然后当你再次初始化的时候,就会提示你有些文件已经存在和端口正在被使用,所以我们要把这些文件删掉,和端口给杀死

k8s常见错误_第1张图片

#删除文件

rm -rf  /etc/kubernetes/mainfests/*
rm -rf /var/lob/etcd

#杀死被占用的端口,我们使用lsof,如果没有的话,先去下载
yum install lsof

lsof -i:10250      #查看10250端口的占用情况

同样的,当我们加入节点的时候,也会遇到类似初始化节点一样的问题,我们也是删除文件和杀死端口再次加入节点就可以

k8s常见错误_第2张图片

k8s组件健康状态有问题

 如下面,我们发送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"}   

k8s的节点提示notready

下面这个是152节点没有准备好

k8s常见错误_第3张图片

一般如果是第一次部署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  

k8s常见错误_第4张图片

k8s常见错误_第5张图片

从上图我们可以看到,这个152节点,没有成功的部署flannel,我们去查看详细的信息看看问题在哪 

[root@k8s151 ~]# kubectl describe pods  kube-flannel-ds-wwdq7  -n kube-flannel

k8s常见错误_第6张图片

我们从上图的结果可以看到,是因为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 可以试试镜像加速,就是把国外的源换成本地的阿里云

k8s常见错误_第7张图片

k8s常见错误_第8张图片

 下载成功后,再次查看,节点已经变为ready

解决k8s"failed to set bridge addr: "cni0" already has an IP address different from 10.244.1.1/24"

pv或者pvc无法被删除

部署的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 属性中的内容,就是删除上面两行就可以

你可能感兴趣的:(kubernetes,linux,运维)