1.Kubernetes Node节点状态处于SchedulingDisabled怎么办?
解决方案:$kubectl patch node kubernetes-minion1 -p'{"spec":{"unschedulable":false}}',执行完成后节点状态就会变成ready
2.Kubernetes环境中创建Pod,Pod一直处于ContainerCreating状态,kubectl describe pod <$podName>,如果Pod日志中显示error syncing pod failed to "CreatePodSandbox" forunable to pull sandbox image "gcr.io/google_containers/pause-amd64:3.0",怎么办?
原因:Kubernetes在部署应用的时候都会先拉一个pause的镜像,这是一个基础镜像,主要负责容器网络部分的功能,Kubernetes默认是从google的镜像仓库上拉取,但是在国内由于GFW或者Kubernetes在内网搭建,所以拉取镜像会失败,所以Pod就会一直处于ContainerCreating状态,最终会失败。
解决方案:
(1)在Kubernetes环境网络可达的镜像私服上放一个pause-amd64的镜像,一般都是3.0版本(具体实现参照问题3)
(2)修改Kubernetes各节点的/etc/kubernetes/kubelet文件,追加KUBELET_ARGS="--pod_infra_container_image=192.168.10.12:5000/google_containers/pause-amd64.3.0"
(3)重启master节点的kube-apiserver kube-controller-manager kube-scheduler kube-proxy服务
3.如何将公网上的容器镜像放到镜像私服上?
解决方案:
(1)外网docker环境中使用docker pull 命令拉取镜像到本地
(2)使用docker save -o 命令将镜像保存为tar格式的文件
(3)将tar文件拷贝至内网docker环境,然后使用docker load < XX.tar命令将镜像load到内网docker环境
(4)将导入后的镜像,使用docker tag <私服地址>/:命令,为镜像打标签
(5)使用docker push<私服地址>/:将镜像push到私服上
4.在K8S集群中出现A节点无法访问B节点上的Pod,怎么办?
解决方案:如果A节点无法ping通B节点上的Pod的IP地址,则在B节点上执行iptables -P FORWARD ACCEPT,反之则在A节点上执行iptables -P FORWARD ACCEPT即可
网友评论