今天在学习kubernetes的时候启动了一个msyql服务,运行命令
[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详细信息
[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查看一下日志
[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:latest
然后上传到dockerhub上,上传过程就不详细说了,不会自行百度,然后在本地机器上拉取该镜像,改一下名字
命名为registry.access.redhat.com/rhel7/pod-infrastructure:latest
最后删除原来的rc和pod
[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的状态终于变成了Running