[英]kubenetes can'n not get nodes info after approve certificate from kubelet
我用手動的方式安裝kubernetes。 在 master 批准 kubelet 的證書請求后,我無法獲取節點信息。
首先, etcd
kube-apiserver
kube-controller-manager
和kube-scheduler
已經正確安裝。 執行命令kubectl get cs
得到如下 output:
[root@master cfg]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-2 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
然后,我嘗試在主節點和工作節點上安裝 kubelet。 在主節點上執行命令kubectl approve node-csr-V_FXPiKHAtqS_9GH27RCk6hPNWE0nF8bLSH6Ot7C360
和kubectl get csr
:
[root@master cfg]# kubectl get csr
NAME AGE SIGNERNAME REQUESTOR CONDITION
node-csr-Tbrw3ia-c0D7kgIURIe_JnP1PCEdwf9XeATP0KcsyBg 111m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued
node-csr-V_FXPiKHAtqS_9GH27RCk6hPNWE0nF8bLSH6Ot7C360 131m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued
但是,我無法從此集群中獲取節點:
[root@master cfg]# kubectl get node
No resources found in default namespace.
任何人都可以牽我的手嗎? 期待您的幫助或一些想法來追蹤問題。 謝謝 !
我找到了這個問題的原因。 主節點和工作節點上的kubelet
服務並沒有真正啟動。 我從 /var/log/message 收到錯誤,請遵循:
Dec 11 21:21:20 worker1 systemd: Started Kubernetes Kubelet.
Dec 11 21:21:20 worker1 systemd: Starting Kubernetes Kubelet...
Dec 11 21:21:20 worker1 systemd: Started Kubernetes systemd probe.
Dec 11 21:21:20 worker1 systemd: Starting Kubernetes systemd probe.
Dec 11 21:21:20 worker1 kubelet: F1211 21:21:20.905947 3066 server.go:274] failed to run Kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
這意味着 docker 的cgroup driver
配置與 kubelet 沖突。 更新 docker 服務文件/usr/lib/systemd/system/docker.service
后,設置--exec-opt native.cgroupdriver=cgroupfs
:
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=cgroupfs \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--init-path=/usr/libexec/docker/docker-init-current \
--seccomp-profile=/etc/docker/seccomp.json \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process
[Install]
WantedBy=multi-user.target
然后,重啟docker和kubelet服務,問題就解決了。 服務kubelet
工作正常。
執行命令kubelet get nodes
, output 如下:
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady <none> 8s v1.18.3
worker1 NotReady <none> 112s v1.18.3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.