OpenEuler 22.03 部署Kubernetes问题记录

FAQ

问题1:使用Mobaxterm客户端操作过程中,经常会卡死无法继续操作,关闭重建连接可继续操作

  • 从容器中退出后,出错概率100%
  • 执行脚本时偶尔出现
  • 连接两个session,若某一session5分钟以上没有操作,该session经常会卡死不可再操作
    该问题非常影响操作,具体原因未知。猜测和OpenEuler当前session的环境变量有关,是OpenEuler系统Bug

问题2:Kubernetes和Flannel安装后,没有/opt/cni/bin目录,安装containernetworking-plugins后,在/usr/libexec/cni/有cni插件,但,没有flannel插件

解决方案:

  1. 将 /usr/libexec/cni 拷贝到 /opt 目录
  2. flannel的插件使用 v1.0.1 版本,通过如下命令获取flannel的部署文件。新版本的flannel已经不再区分CPU架构
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
docker pull rancher/mirrored-flannelcni-flannel-cni-plugin:v1.0.1
docker pull rancher/mirrored-flannelcni-flannel:v0.17.0
  1. flannel安装过程中,会将最新的插件默认放到 /opt/cni/bin 目录下

问题3:docker 必须使用OpenEuler自己的源,使用CentOS的源安装不成功,安装的docker 18.09 是 OE版本,华为二开过的版本

使用如下命令可以查看可安装的docker版本,不需要额外添加源。

[root@zlj ~]# dnf list --showduplicates | grep docker
docker-engine.x86_64                                    18.09.0-300.oe2203                           @@System
docker-client-java.noarch                               8.11.7-2.oe2203                              everything
docker-client-java.src                                  8.11.7-2.oe2203                              source
docker-compose.noarch                                   1.22.0-4.oe2203                              everything
docker-compose.src                                      1.22.0-4.oe2203                              source
docker-engine.src                                       18.09.0-300.oe2203                           source
docker-engine.x86_64                                    18.09.0-300.oe2203                           OS
docker-engine.x86_64                                    18.09.0-300.oe2203                           everything
docker-engine-debuginfo.x86_64                          18.09.0-300.oe2203                           debuginfo
docker-engine-debugsource.x86_64                        18.09.0-300.oe2203                           debuginfo
docker-runc.src                                         1.0.0.rc3-300.oe2203                         source
docker-runc.x86_64                                      1.0.0.rc3-300.oe2203                         OS
docker-runc.x86_64                                      1.0.0.rc3-300.oe2203                         everything
pcp-pmda-docker.x86_64                                  5.3.5-6.oe2203                               OS
pcp-pmda-docker.x86_64                                  5.3.5-6.oe2203                               everything
podman-docker.noarch                                    1:0.10.1-12.oe2203                           everything
python-docker.src                                       4.4.4-1.oe2203                               source
python-docker-help.noarch                               4.4.4-1.oe2203                               everything
python-docker-pycreds.src                               0.4.0-2.oe2203                               source
python-dockerpty.src                                    0.4.1-3.oe2203                               source
python-dockerpty-help.noarch                            0.4.1-3.oe2203                               everything
python3-docker.noarch                                   4.4.4-1.oe2203                               everything
python3-docker-pycreds.noarch                           0.4.0-2.oe2203                               everything
python3-dockerpty.noarch                                0.4.1-3.oe2203                               everything

ps:dnf 或 yum命令均可,欧拉系统已做兼容 查找到具体的版本后执行如下命令即可完成安装

dnf install docker-engine.x86_64 

yum install docker-engine.x86_64

注意事项

  • Docker容器的安装需要使用root权限。
  • docker-engine rpm包与containerd rpm包、runc rpm包、podman rpm包不能同时安装。因为docker-engine rpm包中已经包含Docker运行所需的所有组件,其中包括containerd、runc、docker二进制,且containerd、runc和podman rpm包也分别提供了对应的二进制,所以重复安装时会出现软件包冲突。

更多Docker容器的配置和命令可参考官方文档:
https://docs.openeuler.org/zh/docs/22.03_LTS/docs/Container/%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE-3.html

问题4:kubelet和docker 的 cgroup driver 使用systemd会失败,必须使用 cgroupfs。

在CentOS、Ubuntu系统上,docker的daemon.json文件配置如下,

[root@isyscore-basic78 ~]# cat /etc/docker/daemon.json

{

  "exec-opts": ["native.cgroupdriver=systemd","selinux-enabled=false"],

  "log-driver": "json-file",

  "log-opts": {

    "max-size": "100m"

  },

  "storage-driver": "overlay2",

  "storage-opts": [

    "overlay2.override_kernel_check=true"

  ],

  "registry-mirrors": ["https://f1z25q5p.mirror.aliyuncs.com"],

  "insecure-registries":["10.30.30.22:9080"],

  "graph": "/home/data/docker"

}


kubelet的service配置如下,采用默认配置

[root@isyscore-basic78 ~]# cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

# Note: This dropin only works with kubeadm and kubelet v1.11+

[Service]

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"

Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"

# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically

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

# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use

# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.

EnvironmentFile=-/etc/sysconfig/kubelet

ExecStart=

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

kubelet的/var/lib/kublet/kubeadm-flags.env配置如下

[root@isyscore-basic78 ~]# cat /var/lib/kubelet/kubeadm-flags.env

KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.2"

在部署的时候,配置了docker的daemon.json文件后,执行kubeadm init命令部署Kubernetes集群,会自动生成配置文件/var/lib/kublet/kubeadm-flags.env,会保证cgroup driver默认和 daemon.json 一致。

在OpenEuler系统上进行部署时,若docker服务的 daemon.json的 cgroup driver 配置为 systemd,在通过 kubeadm init 命令初始化 Kubernetes 集群时,kubelet的cgroup driver 也会配置为 systemd,此时在systemctl status kubelet 或 journalctl -xfu kubelet 会存在如下报错:

applying cgroup configuration for process caused \"No such device or address\"

虽然此时 docker 和 kubelet 的cgroup driver 配置一致,均为 systemd,但,依然会报错,flannel无法启动。
kubelet默认使用的 cgroup driver 为 cgroupfs,但,官方建议使用 systemd。我们已经使用了systemd,为啥还是会报错,flannel无法启动?
针对报错在网上进行了搜索,但,相关Bug已经得到了解决,事实证明,在 centos、ubuntu系统上,确实已经不存在该问题,只要 docker 和 kubelet 使用的 cgroup driver 保持一致就行。
最后,将OpenEuler系统上的 docker 和 kubelet 的 cgroup driver 均修改为 cgroupfs,flannel正常启动,kubelet也不存在相关报错。因而,认为,OpenEuler系统上的 cgroup driver 目前只能采用 cgroupfs。

ps:OpenEuler系统上的 docker 使用的版本为 18.09.0.300-oe,是经过 华为 二开的版本,估计问题和 docker 版本有关。

[root@zlj ~]# docker version

Client:

 Version:           18.09.0

 EulerVersion:      18.09.0.300

 API version:       1.39

 Go version:        go1.17.3

 Git commit:        aa1eee8

 Built:             Wed Mar 30 05:07:38 2022

 OS/Arch:           linux/amd64

 Experimental:      false

​

Server:

 Engine:

  Version:          18.09.0

  EulerVersion:     18.09.0.300

  API version:      1.39 (minimum version 1.12)

  Go version:       go1.17.3

  Git commit:       aa1eee8

  Built:            Tue Mar 22 00:00:00 2022

  OS/Arch:          linux/amd64

  Experimental:     false


问题5:将kubelet的cgroup driver配置为cgroupfs,通过在文件/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf中添加 Environment=“KUBELET_EXTRA_ARGS=–cgroup-driver=cgroupfs"字段,daemon-reload 并重启kubelet不生效,需要修改文件/var/lib/kubelet/kubeadm-flags.env, 添加字段KUBELET_KUBEADM_ARGS=”–cgroup-driver=cgroupfs" 重启kubelet生效

在将 docker 和 kubelet 的cgroup driver 修改为 cgroupfs 时,遇到如题问题。若两者不一致会报错如下:

 kubelet cgroup driver: “systemd” is different from docker cgroup driver: “cgroupfs” 的提示,意思是kubelet cgroup driver跟docker cgroup driver的

https://blog.csdn.net/MoFengLian/article/details/122825046

failed to run Kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

https://www.cnblogs.com/fqszywz/p/15335289.html
经过多次尝试发现,修改kubelet的cgroup driver,通过修改 service 文件是无法生效的,需要修改文件/var/lib/kubelet/kubeadm-flags.env,关于cgroup driver部分,修改为如下内容:
KUBELET_KUBEADM_ARGS=“–cgroup-driver=cgroupfs”
再次重启 kubelet服务 systemctl restart kubelet,即可生效。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以在openEuler的官方软件仓库中下载openEuler 22.03 LTS版本的ISO安装包。该版本的ISO安装包已经上线,并提供了RPM一键安装openGauss的能力,以提高用户的易用性。\[1\]另外,您也可以通过查看编译主机系统信息来确定openEuler 22.03 LTS的版本信息。可以使用以下命令查看:\[2\] ``` \[root@localhost ~\]# cat /etc/os-release ``` 如果您需要处理openEuler 22.03 LTS在yum安装saltstack3003.3过程中依赖的包python-pyzmq和python3-zmq的冲突问题,可以考虑编译生成python3-zmq-20.0.0-1.x86_64.rpm。这样可以解决冲突问题。\[3\] #### 引用[.reference_title] - *1* [openEuler 22.03-LTSx86安装UKUI3.0+bpytop](https://blog.csdn.net/weixin_47268883/article/details/124963205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [编译定制openEuler22.03 LTS系统专用的“python3-zmq”rpm以解决saltstack3003.3的rpm安装问题](https://blog.csdn.net/forestqq/article/details/128458624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值