今天在學習kubernetes的時候啓動了一個msyql服務,運行命令mysql
[root@liuxuchong kubernetes]# kubectl create -f mysql-rc.yaml replicationcontroller "mysql" created [root@liuxuchong kubernetes]# kubectl get all NAME DESIRED CURRENT READY AGE rc/mysql 1 1 0 6m NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 10m NAME READY STATUS RESTARTS AGE po/mysql-f7df5 0/1 ContainerCreating 0 6m
能夠看到rc沒有ready,而且pod一直顯示ContainerCreating
顯示pod詳細信息sql
[root@liuxuchong ca]# kubectl describe pod mysql-f7df5 Name: mysql-f7df5 Namespace: default Node: 127.0.0.1/127.0.0.1 Start Time: Wed, 15 May 2019 11:56:38 +0800 Labels: app=mysql Status: Pending IP: Controllers: ReplicationController/mysql Containers: mysql: Container ID: Image: 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 --------- -------- ----- ---- ------------- -------- ------ ------- 5m 5m 1 {default-scheduler } Normal Scheduled Successfully assigned mysql-f7df5 to 127.0.0.1 5m 2m 5 {kubelet 127.0.0.1} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull faileredhat.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)" 4m 5s 19 {kubelet 127.0.0.1} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redastructure:latest\""
看到了倆個警告,第一個是說拉取鏡像請求失敗,括號裏的意思是沒有這個目錄,手動查了一遍發現有這個目錄,網上說安裝一下rhsm,yum install rhsm -y,發現問題仍是沒有解決,因而想到拉取鏡像須要訪問外網,阿里雲的機器不能訪問外網,因而從國外的服務器拉取了鏡像。
用命令journalctl -u kubelet -f查看一下日誌docker
[root@liuxuchong kubernetes]# journalctl -u kubelet -f -- Logs begin at Tue 2018-04-10 03:20:48 CST. -- May 15 12:02:25 liuxuchong kubelet[28192]: E0515 12:02:25.614469 28192 docker_manager.go:2159] Failed to create pod infra container: ImagePullBackOff; Skipping pod "mysql-f7df5_default(70ce53f4-76c5-11e9-963f-00163e324a1f)": Back-off pulling image "registry.access.redhat.com/rhel7/pod-infrastructure:latest" May 15 12:02:25 liuxuchong kubelet[28192]: E0515 12:02:25.614942 28192 pod_workers.go:184] Error syncing pod 70ce53f4-76c5-11e9-963f-00163e324a1f, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""
果斷拉取(能夠訪問外網的服務器)服務器
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latestapp
而後上傳到dockerhub上,上傳過程就不詳細說了,不會自行百度,而後在本地機器上拉取該鏡像,改一下名字
命名爲registry.access.redhat.com/rhel7/pod-infrastructure:latest
最後刪除原來的rc和podide
[root@liuxuchong ca]# kubectl get all NAME DESIRED CURRENT READY AGE rc/mysql 1 1 0 6m NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 10m NAME READY STATUS RESTARTS AGE po/mysql-f7df5 0/1 ContainerCreating 0 6m [root@liuxuchong ca]# kubectl delete rc mysql replicationcontroller "mysql" deleted [root@liuxuchong ca]# kubectl delete pod mysql-f7df5 pod "mysql-f7df5" deleted
從新建立學習
[root@liuxuchong kubernetes]# kubectl create -f mysql-rc.yaml replicationcontroller "mysql" created [root@liuxuchong kubernetes]# kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 7s [root@liuxuchong kubernetes]# kubectl get pods NAME READY STATUS RESTARTS AGE mysql-r4kxq 1/1 Running 0 12s
pod的狀態終於變成了Runningthis