我已经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]: …Run Code Online (Sandbox Code Playgroud) 我正忙于设置新的 k8s 集群。
我正在使用 rke 和 --max-pods: 200
kubelet: # https://rancher.com/docs/rke/latest/en/config-options/services/services-extras/#extra-args
extra_args:
- max-pods: 200 # https://forums.rancher.com/t/solved-setting-max-pods/11866/5
Run Code Online (Sandbox Code Playgroud)
如何检查是否使用正确的设置创建了正在运行的节点。
我尝试在centos 7上安装单节点集群,使用kubadm 1.24和containerd,\ni遵循安装步骤,
\n我做了:\ncontainerd config default > /etc/containerd/config.toml\n并通过了:SystemdCgroup = true
\n但 kubeadm init 失败于:
\n[root@master-node .kube]# kubeadm init\n[init] Using Kubernetes version: v1.24.0\n[preflight] Running pre-flight checks\n [WARNING HTTPProxy]: Connection to "https://10.XXXXXXXX" uses proxy "http://proxy-XXXXXXXXX.com:8080/". If that is not intended, adjust your proxy settings\n [WARNING HTTPProxyCIDR]: connection to "10.96.XXXXXXXX" uses proxy "http://proxy-XXXXXXXXX.com:8080/". This may lead to malfunctional cluster setup. Make sure that Pod and Services IP ranges specified correctly as exceptions in proxy configuration\n[preflight] Pulling images required for setting …Run Code Online (Sandbox Code Playgroud) 我曾尝试在我的裸机服务器上使用 kubeadm 构建 kubernetes,并将 containerd 作为 cri,但安装 cni (weave-net) 后似乎 coredns 无法启动。
两个 coredns 容器现在处于“CrashLoopBackOff”状态,它们的日志为:
plugin/forward: no nameservers found
Run Code Online (Sandbox Code Playgroud)
而“kubectl描述pod”的描述如下:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 4m52s (x9 over 13m) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn't tolerate.
Normal Scheduled 4m7s default-scheduler Successfully assigned kube-system/coredns-58cf647449-8pq7k to k8s
Normal Pulled 3m13s (x4 over 4m6s) kubelet Container image "localhost:5000/coredns:v1.8.4" already present on machine
Normal Created 3m13s (x4 …Run Code Online (Sandbox Code Playgroud) 升级到 v1.24.0 后(删除 Dockershim 后),我必须安装cri-dockerd,然后我执行了以下操作:
\nsudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.0.196\nRun Code Online (Sandbox Code Playgroud)\n我选择flannel作为网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\nRun Code Online (Sandbox Code Playgroud)\n到目前为止,一切都按预期进行,但在主节点上启用调度、加入工作节点并部署我的 Pod 和服务后,我注意到一个奇怪的网络问题,即NodePort和ClusterIP服务在节点之间无法工作(使用一个节点时没有问题) 。
\n后来我发现 pod 是从docker 网络( 172.17.0.*) 获取 IP 地址,而不是从--pod-network-cidr=10.244.0.0/16:
masterzulu@master-zulu:~$ kubectl get pods --all-namespaces -o wide\nNAMESPACE NAME READY STATUS RESTARTS AGE IP NODE \n\ndjango-space django-588cb669d4-46b4w 1/1 Running 0 3m35s 172.17.0.4 master-zulu\ndjango-space postgres-deployment-b58d5ff94-hs7t4 1/1 Running 0 3m35s 172.17.0.5 master-zulu\nkube-system coredns-6d4b75cb6d-8gw6c 1/1 Running 0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个本地 Kubernetes 集群。首先,我使用 kubeadm 在一个节点上初始化我的控制平面。但所有 kube 系统 pod 都会不断崩溃。我通过 crictl 深入研究了 pod 日志,结果发现大多数 pod 崩溃是因为它们无法到达 上的 kube-apiserver <node IP>:6443。并且 kube-apiserver 似乎崩溃了,因为它无法到达 上的 etcd 127.0.0.1: 2379。etcd 会“崩溃”,因为几分钟后它会在没有任何明显原因的情况下收到 sigterm。在 etcd 容器进程上使用 strace 可以得到:
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=0, si_uid=0} ---
Run Code Online (Sandbox Code Playgroud)
我尝试过 flanneld、calico 和 weave net 作为 CNI,但没有成功。交换从一开始就被禁用了。防火墙没有任何自定义规则。作为一名 kubernetes 新手,我想不出其他可能的失败原因,如果有任何提示,我将不胜感激。
系统信息:
我有由 kubeadm 创建的 HA k8s 集群。我想更新 API 服务器证书以添加其他 SAN。为此,我遵循了另一篇文章中描述的一些步骤,但我对 HA 集群做了什么:
删除了所有控制平面节点上的API 服务器证书
检索当前的 kubeadm 配置映射
Run Code Online (Sandbox Code Playgroud)kubectl get configmap kubeadm-config \ --namespace kube-system \ --output jsonpath={{ .data.ClusterConfiguration }}
Run Code Online (Sandbox Code Playgroud)apiServer: certSANs: - localhost - 127.0.0.1
kubeadm init phase certs apiserver --config <config_path>
在所有控制平面节点上重新启动 API 服务器容器
更新了集群内配置
kubeadm init phase upload-config kubeadm --config <config_path>
问题是这些步骤是否正确,或者还有其他更简单的方法吗?
是否可以在运行 Kubernetes 集群时更改 CIDR 网络法兰绒?如果是,启动的 Pod 会发生什么?
谢谢
kubeadm ×8
kubernetes ×8
containerd ×2
networking ×2
centos7 ×1
cidr ×1
etcd ×1
kubectl ×1
systemctl ×1
systemd ×1