Kubernetes新建RC成功時但Pods沒有自動生成的解決方法
阿新 • • 發佈:2018-12-10
建立好yaml檔案以後,為了將它釋出到kubernetes叢集中,在Master節點執行以下命令時,顯示我們想要建立的RC已經建立成功
#kubectl create -f filename.yam
replicationcontroller "rcname" created
但是當檢視Pods時,卻顯示不存在
#kubectl get pods
No resources found.
解決辦法是編輯/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL 中的 SecurityContextDeny,ServiceAccount ,並重啟kube-apiserver.service服務
#vim /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
#systemctl restart kube-apiserver.service
刪除RC,重新執行前面的步驟就可以看到Pods的生成了
#kubectl delete -f filename.yam replicationcontroller "rcname" deleted #kubectl create -f filename.yam replicationcontroller "rcname" created #kubectl get pods NAME READY STATUS RESTARTS AGE mysql-sgvzt 0/1 ContainerCreating 0 3s
若是Pod一直卡在ContainerCreating狀態,可以用以下命令檢視具體原因
#kubectl describe pod mysql-sgvzt Name: mysql-sgvzt Namespace: default Node: 127.0.0.1/127.0.0.1 Start Time: Thu, 26 Apr 2018 13:45:25 +0800 Labels: app=mysql Status: Pending IP: Controllers: ReplicationController/mysql Containers: mysql: Container ID: Image: docker.io/mysql Image ID: Port: 3306/TCP State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Volume Mounts: <none> Environment Variables: MYSQL_ROOT_PASSWORD: 123456 Conditions: Type Status Initialized True Ready False PodScheduled True No volumes. QoS Class: BestEffort Tolerations: <none> Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 30m 30m 1 {default-scheduler } Normal Scheduled Successfully assigned mysql-sgvzt to 127.0.0.1 30m 4m 10 {kubelet 127.0.0.1} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)" 29m 1s 132 {kubelet 127.0.0.1} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""
根據結果,可以明顯看到失敗原因,缺少了/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt
pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory
而這個缺失的檔案是由python-rhsm-certificates提供的,所以我們只需要用yum安裝他就行了
yum install -y *rhsm*
如果依然報錯,可參考下面的方案:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
這兩個命令會生成/etc/rhsm/ca/redhat-uep.pem檔案.
順得的話會得到下面的結果。
[[email protected]]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...
latest: Pulling from registry.access.redhat.com/rhel7/pod-infrastructure
26e5ed6899db: Pull complete
66dbe984a319: Pull complete
9138e7863e08: Pull complete
Digest: sha256:92d43c37297da3ab187fc2b9e9ebfb243c1110d446c783ae1b989088495db931
Status: Downloaded newer image for registry.access.redhat.com/rhel7/pod-infrastructure:latest
刪除原來建立的rc
[[email protected] /]# kubectl delete -f mysql-rc.yaml
重新建立
[[email protected] /]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
再次檢視狀態
[[email protected] /]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-b8m2q 1/1 Running 0 27m
作者:JensenWong
連結:https://www.jianshu.com/p/e601d79357c6
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。