1.环境概述
2022 年 4 月 22 日Ubuntu 22.04 代号 Jammy Jellyfish 已经于正式发布,此版本是长期支持 LTS 版本,能够在 2027 年 4 月之前获得官方支持和更新。最大的变化就是将Cgroup v2当做默认项了,Cgroup是什么呢?了解K8S,Docker的读者肯定不陌生,它是容器技术的基石。也正因为cgroup v2让我此次的rancher安装之旅变得坎坷。因此记录下,方便以后查看。
硬件环境 | 描述 |
---|---|
HP笔记本 | Linux、windows双系统 |
资源配置 | i7处理器,8核心,内存16GB |
显卡 | MX450 |
操作系统 | Ubuntu 22.04.1 LTS |
Docker版本 | 20.10.17 |
Rancher | v2.6.3 |
2.问题描述
【1】[FATAL] k3s exited with: exit status 1
报错信息如下
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2022-08-25 04:06:01.786359 I | etcdmain: etcd Version: 3.4.3
2022-08-25 04:06:01.786361 I | etcdmain: Git SHA: 3cf2f69b5
2022-08-25 04:06:01.786364 I | etcdmain: Go Version: go1.12.12
2022-08-25 04:06:01.786366 I | etcdmain: Go OS/Arch: linux/amd64
2022-08-25 04:06:01.786368 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2022-08-25 04:06:01.786396 N | etcdmain: the server is already initialized as member before, starting as etcd member...
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2022-08-25 04:06:01.786586 I | embed: name = default
2022-08-25 04:06:01.786593 I | embed: data dir = management-state/etcd
2022-08-25 04:06:01.786595 I | embed: member dir = management-state/etcd/member
2022-08-25 04:06:01.786597 I | embed: heartbeat = 500ms
2022-08-25 04:06:01.786600 I | embed: election = 5000ms
2022-08-25 04:06:01.786602 I | embed: snapshot count = 100000
2022-08-25 04:06:01.786607 I | embed: advertise client URLs = http://localhost:2379
2022-08-25 04:06:01.786609 I | embed: initial advertise peer URLs = http://localhost:2380
2022-08-25 04:06:01.786612 I | embed: initial cluster =
2022-08-25 04:06:01.786988 I | etcdserver: restarting member 8e9e05c52164694d in cluster cdf818194e3a8c32 at commit index 36
raft2022/08/25 04:06:01 INFO: 8e9e05c52164694d switched to configuration voters=()
raft2022/08/25 04:06:01 INFO: 8e9e05c52164694d became follower at term 12
raft2022/08/25 04:06:01 INFO: newRaft 8e9e05c52164694d [peers: [], term: 12, commit: 36, applied: 0, lastindex: 36, lastterm: 12]
2022-08-25 04:06:01.790453 W | auth: simple token is not cryptographically signed
2022-08-25 04:06:01.791405 I | etcdserver: starting server... [version: 3.4.3, cluster version: to_be_decided]
raft2022/08/25 04:06:01 INFO: 8e9e05c52164694d switched to configuration voters=(10276657743932975437)
2022-08-25 04:06:01.791754 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32
2022-08-25 04:06:01.791809 N | etcdserver/membership: set the initial cluster version to 3.4
2022-08-25 04:06:01.791847 I | etcdserver/api: enabled capabilities for version 3.4
2022-08-25 04:06:01.792469 I | embed: listening for peers on 127.0.0.1:2380
raft2022/08/25 04:06:08 INFO: 8e9e05c52164694d is starting a new election at term 12
raft2022/08/25 04:06:08 INFO: 8e9e05c52164694d became candidate at term 13
raft2022/08/25 04:06:08 INFO: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 13
raft2022/08/25 04:06:08 INFO: 8e9e05c52164694d became leader at term 13
raft2022/08/25 04:06:08 INFO: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 13
2022-08-25 04:06:08.297711 I | embed: ready to serve client requests
2022-08-25 04:06:08.297938 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2022-08-25 04:06:08.299527 N | embed: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!
2022/08/25 04:06:08 [INFO] Waiting for server to become available: Get "https://127.0.0.1:6443/version?timeout=15m0s": dial tcp 127.0.0.1:6443: connect: connection refused
exit status 1
2022/08/25 04:06:08 [FATAL] k3s exited with: exit status 1
3.解决方案
【1】查询了rancher的官方论坛后,了解到是因为ubuntu 22.04默认启用cgroup v2,于是乎开始查阅资料,看是否有更改Ubuntu 默认启用cgroup v1的方案,结果试了好几个并没有解决。
#判断系统是否启用了cgroups v2:
cat /sys/fs/cgroup/cgroup.controllers
#如果提示not found,说明是v1. 若已启用v2则会打印出生效中的控制器,例如 cpuset cpu io memory pids rdma
cpuset cpu io memory hugetlb pids rdma misc
【2】因此尝试从cgroup v2身上入手,查阅了cgroup v2的相关资料,发现他是可以配置CPU,memory的资源配额,于是继续寻找docker关于这方面适配的资料。偶然间发现了一个docker参数,–cgroupns host ,于是将rancher的启动命令修改如下,因而解决了困扰大半天的问题。
Docker 自引擎版本 20.10 起支持 cgroup v2,它将自动在启用了 cgroups v2 的发行版上使用它。从容器内获取唯一容器 ID 的已知解决方案不再有效。一种解决方法是使用选项 --cgroupns host 运行容器.但这需要控制容器的创建。
sudo docker run --privileged -d --restart=unless-stopped --name rancher --cgroupns host --network=host -p 80:80 -p 443:443 rancher/rancher:stable
附上安装成功的图片,与读者分享下喜悦,更多精彩,下一篇文章见~
在这里插入图片描述