k8s创建容器可以查看deployment但是没有pod创建的异常

    在测试部署k8s环境后,测试创建容器环境,执行创建命令后,提示deployment创建成功,但是在查看pod时,提示没有pod,场景信息如下:

[root@k8s1-1 kubernetes]# kubectl run nginx  --image=nginx --replicas=1 --port=8000
deployment "nginx" created
[root@k8s1-1 kubernetes]# kubectl  get pod
No resources found.
[root@k8s1-1 kubernetes]# kubectl  get deployment       #
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx     1         0         0            0           23s

想起k8s从执行命令到创建pod的过程,如下:

image.png

可以先判断出可能出现问题的点:controller-manager,一下是排查controller-manager的步骤,事实证明就是该点创建pod报错,并根据提示报错提示信息解决问题的,

1.查看controller-manager的服务启动是否正常,服务正常,但是有提示replica_set创建nginx的pod失败

[root@k8s1-1 ~]# systemctl status  kube-controller-manager
● kube-controller-manager.service - Kubernetes Controller Manager
   Loaded: loaded (/usr/lib/systemd/system/kube-controller-manager.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2020-03-11 22:27:45 CST; 13h ago
     Docs: https://github.com/GoogleCloudPlatform/kubernetes
 Main PID: 2749 (kube-controller)
   Memory: 63.0M
   CGroup: /system.slice/kube-controller-manager.service
           └─2749 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://192.168.191.20:8080
3月 12 12:18:00 k8s1-1 kube-controller-manager[2749]: E0312 12:18:00.745860    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed...account
3月 12 12:18:00 k8s1-1 kube-controller-manager[2749]: I0312 12:18:00.746001    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namesp...
3月 12 12:18:10 k8s1-1 kube-controller-manager[2749]: I0312 12:18:10.964525    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namesp...
3月 12 12:18:10 k8s1-1 kube-controller-manager[2749]: E0312 12:18:10.964989    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed...account
3月 12 12:19:00 k8s1-1 kube-controller-manager[2749]: E0312 12:19:00.974815    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed...account
3月 12 12:19:00 k8s1-1 kube-controller-manager[2749]: I0312 12:19:00.975211    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namesp...
3月 12 12:20:31 k8s1-1 kube-controller-manager[2749]: E0312 12:20:31.943106    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed...account
3月 12 12:20:31 k8s1-1 kube-controller-manager[2749]: I0312 12:20:31.944967    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namesp...
3月 12 12:23:24 k8s1-1 kube-controller-manager[2749]: I0312 12:23:24.817465    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namesp...
3月 12 12:23:24 k8s1-1 kube-controller-manager[2749]: E0312 12:23:24.817504    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed...account
Hint: Some lines were ellipsized, use -l to show in full.

2.查看具体的信息

tail -f  /var/log/message
Mar 12 10:32:09 k8s1-1 kube-controller-manager: E0312 10:32:09.872378    2749 replica_set.go:448] Sync "default/nginx-3360602662" failed with unable to c
reate pods: No API token found for service account "default", retry after the token is automatically created and added to the service account
Mar 12 10:32:09 k8s1-1 kube-controller-manager: I0312 10:32:09.873371    2749 event.go:217] Event(api.ObjectReference{Kind:"ReplicaSet", Namespace:"defau
lt", Name:"nginx-3360602662", UID:"826df3de-63ab-11ea-86b1-000c295f23c3", APIVersion:"extensions", ResourceVersion:"3632", FieldPath:""}): type: 'Warning
' reason: 'FailedCreate' Error creating: No API token found for service account "default", retry after the token is automatically created and added to th
e service account

3.百度查到是因为kube-apiservice和kube-controller-manager中没有配置serviceaccount

1、首先生成密钥:
openssl genrsa -out /etc/kubernetes/serviceaccount.key 2048
2、编辑/etc/kubenetes/apiserver
添加以下内容:
KUBE_API_ARGS="--service_account_key_file=/etc/kubernetes/serviceaccount.key"
3、再编辑/etc/kubernetes/controller-manager
添加以下内容:
KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/etc/kubernetes/serviceaccount.key"
最后无论是哪种解决方式都需要再重启kubernetes服务:
systemctl restart etcd kube-apiserver kube-controller-manager kube-scheduler

4.再次查看创建的pod和deployment信息正常

[root@k8s1-1 ~]# kubectl get deployment
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx     1         1         1            0           2h
[root@k8s1-1 ~]# kubectl get pod
NAME                     READY     STATUS              RESTARTS   AGE
nginx-3360602662-1bl96   0/1       ContainerCreating   0          25m


猜你喜欢

转载自blog.51cto.com/12182612/2477630