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的過程,如下:

可以先判斷出可能出現問題的點: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/messages
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(每台服務器的serviceaccount.key一樣)

1、首先生成密鑰:
openssl genrsa -out /etc/kubernetes/serviceaccount.key 2048
2、編輯/etc/kubernetes/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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM