新足迹

 找回密码
 注册

精华好帖回顾

· 220 MM 传说中的神头拍帅哥! (2011-10-24) 陈少 · 参加活动:新鲜出炉的Corolla的故事 (2013-6-11) idog8818
· 买好了,交个小作业,贴几张pic (2009-2-6) sarasun · 万人期待的大片来啦!非诚勿扰前传--新足迹版 改编自《37岁男高调征婚贴》 (2013-4-20) steveking
Advertisement
Advertisement
查看: 2225|回复: 24

kubernetes 问题,这里碰碰运气 (变相解决了) [复制链接]

发表于 2023-4-26 21:04 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 eric_gao 于 2023-4-29 17:31 编辑

车库里有个micro server, 内存很大,跑了好几个虚拟机,突发奇想,做个kubernetes cluster, 不想minikube,想做个真正的两节点cluster。

用的是最新1.27

master node 初始化一切正常

[student@control ~]$ kubectl get all -A
NAMESPACE      NAME                                  READY   STATUS    RESTARTS      AGE
kube-flannel   pod/kube-flannel-ds-txsfl             1/1     Running   0             23h
kube-system    pod/coredns-5d78c9869d-tp76m          1/1     Running   0             23h
kube-system    pod/coredns-5d78c9869d-tpgds          1/1     Running   0             23h
kube-system    pod/etcd-control                      1/1     Running   3 (23h ago)   23h
kube-system    pod/kube-apiserver-control            1/1     Running   3 (23h ago)   23h
kube-system    pod/kube-controller-manager-control   1/1     Running   3 (23h ago)   23h
kube-system    pod/kube-proxy-wfzlk                  1/1     Running   0             23h
kube-system    pod/kube-scheduler-control            1/1     Running   3 (23h ago)   23h

NAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  23h
kube-system   service/kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   23h

NAMESPACE      NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-flannel   daemonset.apps/kube-flannel-ds   1         1         1       1            1           <none>                   23h
kube-system    daemonset.apps/kube-proxy        1         1         1       1            1           kubernetes.io/os=linux   23h

NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns   2/2     2            2           23h

NAMESPACE     NAME                                 DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-5d78c9869d   2         2         2       23h
[student@control ~]$

[student@control ~]$ kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
control   Ready    control-plane   23h   v1.27.1
[student@control ~]$


但是节点1, join的时候,kubelet初始化失败, 提示failed to parse kubelet flag: unknown flag: --container-runtime


-- The start-up result is done.
Apr 26 20:58:14 node1 kubelet[82213]: E0426 20:58:14.003156   82213 run.go:74] "command failed" err="failed to parse kubelet flag: unknown flag: --cont>
Apr 26 20:58:14 node1 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Apr 26 20:58:14 node1 systemd[1]: kubelet.service: Failed with result 'exit-code'.

貌似无解啊。 看了service 的定义,--container-runtime 是kubeadm join的时候动态生成的flag, 1.24-1.27 都取消了,目前只接受 --container-runtime=remote作为临时过度,  但是1.27 kubelet  join cluster的时候, 用的是 --container-runtime=docker

[student@node1 ~]$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since Wed 2023-04-26 21:01:28 AEST; 1s ago
     Docs: https://kubernetes.io/docs/
  Process: 82387 ExecStart=/usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --config=/var/lib/kubelet/config.yaml --container-runtime=docker --hostname-override=node1 --kubecon>
Main PID: 82387 (code=exited, status=1/FAILURE)

Apr 26 21:01:28 node1 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Apr 26 21:01:28 node1 systemd[1]: kubelet.service: Failed with result 'exit-code'.
[student@node1 ~]$


想过downgrade node1的kubelet, 但是1.24-1.27 都是这个熊样,再往前,和master小版本相差太多,我记得好像worker node和master node最多可以相差2个小版本的。

想问问大神们有什么办法跳过这里?  谢谢, 谢谢,谢谢了。
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220
Advertisement
Advertisement

发表于 2023-4-26 21:06 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2023-4-26 21:09 |显示全部楼层
此文章由 SLCOW 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 SLCOW 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Removal of --container-runtime command line argument
The kubelet accepts a deprecated command line argument, --container-runtime, and the only valid value would be remote after dockershim code is removed. Kubernetes v1.27 will remove that argument, which has been deprecated since the v1.24 release.

发表于 2023-4-26 21:28 |显示全部楼层
此文章由 SLCOW 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 SLCOW 所有!转贴必须注明作者、出处和本声明,并保持内容完整
试一下 /var/lib/kubelet/kubeadm-flags.env , which contains a list of flags to pass to the kubelet when it starts.

发表于 2023-4-26 21:39 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
SLCOW 发表于 2023-4-26 21:28
试一下 /var/lib/kubelet/kubeadm-flags.env , which contains a list of flags to pass to the kubelet w ...

试过了以下两个

/var/lib/kubelet/kubeadm-flags.env

/etc/sysconfig/kubelet

也重新安装了kubelet, 但是kubeadm join,一初始化, 还是 --container-runtime=docker,  气的半死。
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220

发表于 2023-4-27 09:50 |显示全部楼层
此文章由 neohope 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 neohope 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你的container runtime跑的啥?  试试containerd

When Docker runtime support is removed in a future release (currently planned for the 1.22 release in late 2021) of Kubernetes it will no longer be supported and you will need to switch to one of the other compliant container runtimes, like。containerd or CRI-O
hmm
Advertisement
Advertisement

发表于 2023-4-27 10:32 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
neohope 发表于 2023-4-27 09:50
你的container runtime跑的啥?  试试containerd

When Docker runtime support is removed in a future re ...

我用的就是containerd
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220

发表于 2023-4-27 13:49 |显示全部楼层
此文章由 间风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 间风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不知道你是什么系统,我在 ubuntu server 22.04.1上测试毫无问题
Master Node:

  1. #!/bin/bash

  2. # Synchronize the package index files and install the packages below
  3. sudo apt-get update

  4. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \
  5.         ca-certificates \
  6.         curl \
  7.         gnupg \
  8.         lsb-release

  9. sudo mkdir -p /etc/apt/keyrings
  10. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  11. echo \
  12.         "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  13.         $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


  14. sudo apt-get update
  15. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y  containerd.io

  16. # setup containerd
  17. sudo mkdir -p /etc/containerd
  18. containerd config default | sudo tee /etc/containerd/config.toml
  19. sudo sed -i 's/SystemdCgroup\ =\ false/SystemdCgroup\ =\ true/g' /etc/containerd/config.toml
  20. sudo systemctl restart containerd

  21. # install kubernetes
  22. sudo apt-get update
  23. sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
  24. echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

  25. sudo apt-get update
  26. k8sversion=1.27.1-00
  27. echo "sudo apt-get install -y kubelet=$k8sversion kubeadm=$k8sversion kubectl=$k8sversion"
  28. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y kubelet=${k8sversion} kubeadm=${k8sversion} kubectl=${k8sversion}
  29. sudo apt-mark hold kubeadm kubelet kubectl

  30. # --pod-network-cidr=10.244.0.0/16 match https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  31. # If you use custom podCIDR (not 10.244.0.0/16) you first need to download the above manifest and modify the network to match your one.
  32. sudo kubeadm init --pod-network-cidr=10.244.0.0/16

  33. mkdir -p $HOME/.kube
  34. sudo cp -rf /etc/kubernetes/admin.conf $HOME/.kube/config
  35. sudo chown $(id -u):$(id -g) $HOME/.kube/config

  36. #CNI
  37. kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

  38. #kubectl taint nodes --all node-role.kubernetes.io/master-
  39. # for k8s 1.24 and above
  40. kubectl taint nodes --all node-role.kubernetes.io/control-plane-

  41. kubectl --namespace=kube-system create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
  42. kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.11.1/cert-manager.yaml
  43. sudo openssl dhparam -out dh-param 2048
  44. kubectl create --namespace=kube-system secret generic tls-dhparam --from-file=./dh-param

  45. sudo crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock
复制代码



# 略去 copy .kube 和 chown

Slave Node:
  1. #Forwarding IPv4 and letting iptables see bridged traffic
  2. cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
  3. overlay
  4. br_netfilter
  5. EOF

  6. sudo modprobe overlay
  7. sudo modprobe br_netfilter

  8. # sysctl params required by setup, params persist across reboots
  9. cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
  10. net.bridge.bridge-nf-call-iptables  = 1
  11. net.bridge.bridge-nf-call-ip6tables = 1
  12. net.ipv4.ip_forward                 = 1
  13. EOF

  14. # Apply sysctl params without reboot
  15. sudo sysctl --system

  16. # verify that the br_netfilter, overlay modules are loaded by running below instruction
  17. lsmod | grep br_netfilter
  18. lsmod | grep overlay



  19. #!/bin/bash

  20. # Synchronize the package index files and install the packages below
  21. sudo apt-get update

  22. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \
  23.         ca-certificates \
  24.         curl \
  25.         gnupg \
  26.         lsb-release

  27. sudo mkdir -p /etc/apt/keyrings
  28. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  29. echo \
  30.         "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  31.         $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


  32. sudo apt-get update
  33. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y  containerd.io

  34. # setup containerd
  35. sudo mkdir -p /etc/containerd
  36. containerd config default | sudo tee /etc/containerd/config.toml
  37. sudo sed -i 's/SystemdCgroup\ =\ false/SystemdCgroup\ =\ true/g' /etc/containerd/config.toml
  38. sudo systemctl restart containerd

  39. # install kubernetes
  40. sudo apt-get update
  41. sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
  42. echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

  43. sudo apt-get update
  44. k8sversion=1.27.1-00
  45. echo "sudo apt-get install -y kubelet=$k8sversion kubeadm=$k8sversion kubectl=$k8sversion"
  46. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y kubelet=${k8sversion} kubeadm=${k8sversion} kubectl=${k8sversion}
  47. sudo apt-mark hold kubeadm kubelet kubectl
复制代码


Join cluster
  1. # get join command from master node
  2. sudo kubeadm token create --print-join-command
  3. # transfer ~/.kube  to slave node
  4. scp -r ~/.kube slave:~/
复制代码


# run on slave node
  1. kubeadm join x.x.x.x:6443 --token  xxxxxx --discovery-token-ca-cert-hash sha256:xxxxxx
复制代码

发表于 2023-4-27 13:51 |显示全部楼层
此文章由 间风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 间风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
1. ****Identify the cgroup version on Linux Nodes****

  1. stat -fc %T /sys/fs/cgroup/
复制代码


For cgroup v2, the output is `cgroup2fs`.

For cgroup v1, the output is `tmpfs.`

Note: ubuntu 22.04 is cgroup v2

发表于 2023-4-27 16:04 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
间风 发表于 2023-4-27 13:51
1. ****Identify the cgroup version on Linux Nodes****

[root@node1 kubelet.service.d]# stat -fc %T /sys/fs/cgroup/
tmpfs
[root@node1 kubelet.service.d]#

下一步是啥呢,老大?
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220

发表于 2023-4-27 16:06 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
间风 发表于 2023-4-27 13:51
1. ****Identify the cgroup version on Linux Nodes****

我的control node 是 redhat 8
node1 是centos 8
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220
Advertisement
Advertisement

发表于 2023-4-27 16:11 |显示全部楼层
此文章由 eric_gao 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 eric_gao 所有!转贴必须注明作者、出处和本声明,并保持内容完整
间风 发表于 2023-4-27 13:51
1. ****Identify the cgroup version on Linux Nodes****

能发一下你的worker node  "systemctl status kubelet" ? 我想看看你的kubelet process是什么

[student@node1 ~]$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since Thu 2023-04-27 16:08:32 AEST; 707ms ago
     Docs: https://kubernetes.io/docs/
  Process: 27838 ExecStart=/usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --config=/var/lib/kubelet/config.yaml --container-runtime=docker --hostname-override=node1 --kubeconfig=/etc/kubernetes/ku>
Main PID: 27838 (code=exited, status=1/FAILURE)

Apr 27 16:08:32 node1 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Apr 27 16:08:32 node1 systemd[1]: kubelet.service: Failed with result 'exit-code'.
[student@node1 ~]$

我这里试着改文件,改service 文件,hard code ExecStart 都不行,就是--container-runtime=docker 搞不掉,一直在。
Sunday Afternoons UPF50+防晒帽专卖
oursteps.co/forum.php?mod=viewthread&tid=934220

发表于 2023-4-27 17:19 |显示全部楼层
此文章由 间风 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 间风 所有!转贴必须注明作者、出处和本声明,并保持内容完整
eric_gao 发表于 2023-4-27 16:04
[root@node1 kubelet.service.d]# stat -fc %T /sys/fs/cgroup/
tmpfs
[root@node1 kubelet.service.d]#

https://kubernetes.io/docs/setup ... untimes/#containerd

Configuring the systemd cgroup driver
To use the systemd cgroup driver in /etc/containerd/config.toml with runc, set

  1. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  2.   ...
  3.   [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  4.     SystemdCgroup = true
复制代码

The systemd cgroup driver is recommended if you use cgroup v2.
你的既然不是cgroupv2 那么保持 SystemdCgroup=false