bes*_*man 19 configuration systemd systemctl kubernetes kubeadm
我已经kubelet 1.26.0使用命令安装在 Ubuntu 22.04 上apt install kubelet,但是当我尝试时journalctl -xeu kubelet得到以下结果:
\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 The unit kubelet.service has entered the 'failed' state with result 'exit-code'.\nDec 14 15:41:16 a systemd[1]: kubelet.service: Scheduled restart job, restart counter is at 86.\n\xe2\x96\x91\xe2\x96\x91 Subject: Automatic restarting of a unit has been scheduled\n\xe2\x96\x91\xe2\x96\x91 Defined-By: systemd\n\xe2\x96\x91\xe2\x96\x91 Support: http://www.ubuntu.com/support\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 Automatic restarting of the unit kubelet.service has been scheduled, as the result for\n\xe2\x96\x91\xe2\x96\x91 the configured Restart= setting for the unit.\nDec 14 15:41:16 a systemd[1]: Stopped kubelet: The Kubernetes Node Agent.\n\xe2\x96\x91\xe2\x96\x91 Subject: A stop job for unit kubelet.service has finished\n\xe2\x96\x91\xe2\x96\x91 Defined-By: systemd\n\xe2\x96\x91\xe2\x96\x91 Support: http://www.ubuntu.com/support\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 A stop job for unit kubelet.service has finished.\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 The job identifier is 26301 and the job result is done.\nDec 14 15:41:16 a systemd[1]: Started kubelet: The Kubernetes Node Agent.\n\xe2\x96\x91\xe2\x96\x91 Subject: A start job for unit kubelet.service has finished successfully\n\xe2\x96\x91\xe2\x96\x91 Defined-By: systemd\n\xe2\x96\x91\xe2\x96\x91 Support: http://www.ubuntu.com/support\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 A start job for unit kubelet.service has finished successfully.\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 The job identifier is 26301.\nDec 14 15:41:16 a kubelet[18015]: Flag --pod-infra-container-image has been deprecated, will be removed in 1.27. Image garbage collector will get sandbox image information from CRI.\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.367525 18015 server.go:198] "--pod-infra-container-image will not be pruned by the image garbage collector in kubelet and should also be set in the rem>\nDec 14 15:41:16 a kubelet[18015]: Flag --pod-infra-container-image has been deprecated, will be removed in 1.27. Image garbage collector will get sandbox image information from CRI.\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.371255 18015 server.go:412] "Kubelet version" kubeletVersion="v1.26.0"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.371272 18015 server.go:414] "Golang settings" GOGC="" GOMAXPROCS="" GOTRACEBACK=""\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.371499 18015 server.go:836] "Client rotation is on, will bootstrap in background"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.372757 18015 certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-current.pem".\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.373608 18015 dynamic_cafile_content.go:157] "Starting controller" name="client-ca-bundle::/etc/kubernetes/pki/ca.crt"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399357 18015 server.go:659] "--cgroups-per-qos enabled, but --cgroup-root was not specified. defaulting to /"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399717 18015 container_manager_linux.go:267] "Container manager verified user specified cgroup-root exists" cgroupRoot=[]\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399832 18015 container_manager_linux.go:272] "Creating Container Manager object based on Node Config" nodeConfig={RuntimeCgroupsName: SystemCgroupsName>\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399866 18015 topology_manager.go:134] "Creating topology manager with policy per scope" topologyPolicyName="none" topologyScopeName="container"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399883 18015 container_manager_linux.go:308] "Creating device plugin manager"\nDec 14 15:41:16 a kubelet[18015]: I1214 15:41:16.399940 18015 state_mem.go:36] "Initialized new in-memory state store"\nDec 14 15:41:16 a kubelet[18015]: E1214 15:41:16.402173 18015 run.go:74] "command failed" err="failed to run Kubelet: validate service connection: CRI v1 runtime API is not implemented for endpoint \\">\nDec 14 15:41:16 a systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE\n\xe2\x96\x91\xe2\x96\x91 Subject: Unit process exited\n\xe2\x96\x91\xe2\x96\x91 Defined-By: systemd\n\xe2\x96\x91\xe2\x96\x91 Support: http://www.ubuntu.com/support\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 An ExecStart= process belonging to unit kubelet.service has exited.\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 The process' exit code is 'exited' and its exit status is 1.\nDec 14 15:41:16 a systemd[1]: kubelet.service: Failed with result 'exit-code'.\n\xe2\x96\x91\xe2\x96\x91 Subject: Unit failed\n\xe2\x96\x91\xe2\x96\x91 Defined-By: systemd\n\xe2\x96\x91\xe2\x96\x91 Support: http://www.ubuntu.com/support\n\xe2\x96\x91\xe2\x96\x91 \n\xe2\x96\x91\xe2\x96\x91 The unit kubelet.service has entered the 'failed' state with result 'exit-code'.\nlines 2547-2600/2600 (END)\nRun Code Online (Sandbox Code Playgroud)\n我不知道出了什么问题。我怎样才能摆脱它?
\nJ.R*_*.R. 17
我在这个问题上遇到了一些困难,@Bogd 的回答让我走上了正确的道路。时间太长,无法评论,因此以下是使用 Flannel 在新的 Ubuntu 22.04 节点上配置稳定的 Kubernetes 1.26 master 所采取的步骤。
sudo apt-get updatesudo apt install apt-transport-https curl安装containerd(参考: https: //docs.docker.com/engine/install/ubuntu/)
sudo mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install containerd.io创建容器配置
sudo mkdir -p /etc/containerdsudo containerd config default | sudo tee /etc/containerd/config.toml编辑/etc/containerd/config.toml
sudo nano /etc/containerd/config.toml
设置 SystemdCgroup = truesudo systemctl restart containerd安装 Kubernetes
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key addsudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"sudo apt install kubeadm kubelet kubectl kubernetes-cni禁用交换
sudo swapoff -a检查并删除任何交换条目(如果存在)
sudo nano /etc/fstab避免 kubeinit 上出现错误“/proc/sys/net/bridge/bridge-nf-call-iptables does not exit”(参考https://github.com/kubernetes/kubeadm/issues/1062)。如果在步骤 6 中也安装了 docker,则无需执行此操作。
sudo modprobe br_netfiltersudo nano /proc/sys/net/ipv4/ip_forward
编辑 ip_forward 文件中的条目并更改为 1。(或使用sysctl -w net.ipv4.ip_forward=1- 感谢 @dpjanes,请参阅评论)kubeinit 与 Flannel 一起使用
sudo kubeadm init --pod-network-cidr=10.244.0.0/16按照 kubadm 命令所述复制到配置
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config应用Flannel(参考https://github.com/flannel-io/flannel)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml现在一切都应该正在运行:
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-mcjmm 1/1 Running 0 76s
kube-system coredns-787d4945fb-fb59g 1/1 Running 0 8m8s
kube-system coredns-787d4945fb-t25tj 1/1 Running 0 8m8s
kube-system etcd-kube-master 1/1 Running 0 8m19s
kube-system kube-apiserver-kube-master 1/1 Running 0 8m19s
kube-system kube-controller-manager-kube-master 1/1 Running 0 8m19s
kube-system kube-proxy-2hz29 1/1 Running 0 8m8s
kube-system kube-scheduler-kube-master 1/1 Running 0 8m19s
Run Code Online (Sandbox Code Playgroud)
Bog*_*ogd 13
今天刚刚遇到同样的问题 - 似乎与K8s 1.26 中的这一更改有关。
解决方案是安装containerd 1.6,但是......似乎还没有APT软件包:(。我只能找到适用于Ubuntu 22.10及更高版本的1.6+软件包。
可能的解决方法:
apt remove --purge kubelet
apt install -y kubeadm kubelet=1.25.5-00
Run Code Online (Sandbox Code Playgroud)
wget https://github.com/containerd/containerd/releases/download/v1.6.12/containerd-1.6.12-linux-amd64.tar.gz
tar xvf containerd-1.6.12-linux-amd64.tar.gz
systemctl stop containerd
cd bin
cp * /usr/bin/
systemctl start containerd
Run Code Online (Sandbox Code Playgroud)
我目前正在测试这两个选项,它们似乎确实有效。希望在不久的将来,我们将获得containerd1.6+ apt 软件包,让事情变得更轻松:)
编辑以添加第三个选项(这似乎是迄今为止最简单的):
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install containerd.io
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39786 次 |
| 最近记录: |