K3s + Rancher 安装笔记

2022-04-17

K3s 是 K8s 的一个轻量版本,可以在普通配置的单台服务器上运行,同时它也足够稳定,可以用在生产环境,适合访问量不那么大的项目,再配合 Rancher 进行管理的话,就对非专业运维人员非常友好了。下面记录一下我的折腾踩坑记录。

本文对应的版本:K3s v1.22.7 / Rancher 2.6.4 。其中 K3s 和 Rancher 分别安装在两台不同的服务器上。

安装 K3s

K3s 官方提供了一键安装脚本,可以通过以下方式安装:

curl -sfL https://get.k3s.io | sh -

如果你的环境中使用官方脚本安装太慢,也可以试试下面的脚本,用国内源安装:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

装好之后根据需要,可以调整下 K3s 的服务配置文件,以将 K3s 的默认容器引擎从 Containerd 切换到 Docker。

修改 K3S 服务的配置文件:

vim /etc/systemd/system/multi-user.target.wants/k3s.service

需要修改 ExecStart 的值:

# 原值
# ExecStart=/usr/local/bin/k3s server

# 新值
ExecStart=/usr/local/bin/k3s server --docker --no-deploy traefik

之后保存退出,执行命令重新加载新的服务配置文件:

systemctl daemon-reload
service k3s restart

最后,可以通过命令确认 K3s 服务是否就绪:

k3s kubectl get node

如果你看到类似下面的输出,表示 K3s 已经安装完成并且正常运行了:

NAME                      STATUS   ROLES                  AGE   VERSION
izuf63s1bimz3ojiw82wbhz   Ready    control-plane,master   90s   v1.22.7+k3s1

到此,K3s 就启动了,可以使用命令行或者相关工具进行管理了。

安装 Rancher

Rancher 是一个可视化的容器管理平台,可以简化 K8s/K3s 的管理工作。

注意,在本例中,Rancher 和 上面的 K3s 安装在不同的服务器上。

安装 Rancher 之前,需要先安装 Docker,如果你的服务环境中已经有了 Docker,可以跳过这一步:

# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

接下来,运行以下命令下载并安装 Rancher:

mkdir -p /var/lib/rancher

docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 -v /var/lib/rancher:/var/lib/rancher/ rancher/rancher:stable

安装成功之后,稍等一会儿,即可通过 https://{服务器 IP} 这样的地址访问 Rancher 的 Web 界面。首次访问浏览器会提示证书错误,如果你使用的是 Chrome 浏览器,错误类似下图所示:

这个错误可以忽略,点击左下角的“高级”按钮,继续访问即可。

如果你看到类似下面的页面,表示安装成功了。

根据页面上的提示,去服务器上找到初始密码,登录,随后根据页面的提示一路下一步,中间会提示你设置新的登录密码。最后,会看到类似下面的集群列表:

现在还只有一个集群,也是 K3s 的,这是 Rancher 本身。

使用 Rancher 管理 K3s

接下来,我们要将刚才安装好的 K3s 导入到 Rancher 中,以便使用 Rancher 对它进行管理。

首先,点击 Rancher 集群列表上方的“Import Existing”按钮,如下图所示:

在下一页的列表中,选择“Generic”:

下一步,需要给这个即将导入的 K3s 集群取一个名字,比如叫“my-k3s”,如下图所示:

点击“Create”按钮,Rancher 会给出一系列命令:

根据提示做即可。登录 K3s 所在的服务器,运行第一个命令,如果遇到 certificate signed by unknown authority 错误,则运行第二个命令。

命令运行成功之后,等一会儿,Rancher 页面即会发生变化,显示新的集群注册成功。

此时再去看 Rancher 的面板首页,可以看到集群列表增加了:

接下来,就可以在 Rancher 中点击进入这个 my-k3s 集群,愉快地玩耍了。🎉

分类:编程标签:DevOps
前一篇无法用语言描述的数字
后一篇读《龙蛋》

相关文章:

评论:

没事造轮子
在 2022-07-08 21:15 写道:
不错,感觉我也可以再折腾折腾我的博客!
回复
gocpplua
在 2023-01-29 07:14 写道:
本机 unbutu 18.04
Docker: 18.09
本机k3s: v1.24.4+k3s1
rancher:v2.7.1 (里面k3s是 v1.24.4+k3s1)

我本机安装k3s,然后本机容器方式安装rancher,再在rancher中导入k3s ,但是发现本机中cattle-cluster-agent出错了,

```
# kubectl logs pod/cattle-cluster-agent-55cb88648-zlrx5 -n cattle-system
INFO: Environment: CATTLE_ADDRESS=10.42.0.10 CATTLE_CA_CHECKSUM=86b55d1496321bddd191cf2943a54dfe3fa2a88d6c1ad0dd3638e70bcd7a46c0 CATTLE_CLUSTER=true CATTLE_CLUSTER_AGENT_PORT=tcp://10.43.216.129:80 CATTLE_CLUSTER_AGENT_PORT_443_TCP=tcp://10.43.216.129:443 CATTLE_CLUSTER_AGENT_PORT_443_TCP_ADDR=10.43.216.129 CATTLE_CLUSTER_AGENT_PORT_443_TCP_PORT=443 CATTLE_CLUSTER_AGENT_PORT_443_TCP_PROTO=tcp CATTLE_CLUSTER_AGENT_PORT_80_TCP=tcp://10.43.216.129:80 CATTLE_CLUSTER_AGENT_PORT_80_TCP_ADDR=10.43.216.129 CATTLE_CLUSTER_AGENT_PORT_80_TCP_PORT=80 CATTLE_CLUSTER_AGENT_PORT_80_TCP_PROTO=tcp CATTLE_CLUSTER_AGENT_SERVICE_HOST=10.43.216.129 CATTLE_CLUSTER_AGENT_SERVICE_PORT=80 CATTLE_CLUSTER_AGENT_SERVICE_PORT_HTTP=80 CATTLE_CLUSTER_AGENT_SERVICE_PORT_HTTPS_INTERNAL=443 CATTLE_CLUSTER_REGISTRY= CATTLE_INGRESS_IP_DOMAIN=sslip.io CATTLE_INSTALL_UUID=d909f8d9-a76a-4ef6-bf4b-f26cc3adee84 CATTLE_INTERNAL_ADDRESS= CATTLE_IS_RKE=false CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cattle-cluster-agent-55cb88648-zlrx5 CATTLE_SERVER=https://127.0.0.1:8043 CATTLE_SERVER_VERSION=v2.7.1
INFO: Using resolv.conf: search cattle-system.svc.cluster.local svc.cluster.local cluster.local nameserver 10.43.0.10 options ndots:5
ERROR: https://127.0.0.1:8043/ping is not accessible (Failed to connect to 127.0.0.1 port 8043 after 0 ms: Connection refused)
```

我尝试在本机执行: curl https://127.0.0.1:8043/ping 成功返回pong,
但是进入容器内执行 curl https://127.0.0.1:8043/ping,出错:curl: (7) Failed to connect to 127.0.0.1 port 8043 after 0 ms: Connection refused。
我的resolv.conf如下:

```
# cat resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 10.151.6.6
nameserver 10.151.6.7
```

想请问大家遇到过这个我问题吗?
回复
gocpplua
在 2023-01-29 07:23 写道:
本机 unbutu 18.04
Docker: 18.09
本机k3s: v1.24.4+k3s1
rancher:v2.7.1 (里面k3s是 v1.24.4+k3s1)

我本机安装k3s,然后本机容器方式安装rancher,再在rancher中导入k3s ,但是发现本机中cattle-cluster-agent出错了,
# kubectl logs pod/cattle-cluster-agent-55cb88648-zlrx5 -n cattle-system
INFO: Environment: CATTLE_ADDRESS=10.42.0.10 CATTLE_CA_CHECKSUM=86b55d1496321bddd191cf2943a54dfe3fa2a88d6c1ad0dd3638e70bcd7a46c0 CATTLE_CLUSTER=true CATTLE_CLUSTER_AGENT_PORT=tcp://10.43.216.129:80 CATTLE_CLUSTER_AGENT_PORT_443_TCP=tcp://10.43.216.129:443 CATTLE_CLUSTER_AGENT_PORT_443_TCP_ADDR=10.43.216.129 CATTLE_CLUSTER_AGENT_PORT_443_TCP_PORT=443 CATTLE_CLUSTER_AGENT_PORT_443_TCP_PROTO=tcp CATTLE_CLUSTER_AGENT_PORT_80_TCP=tcp://10.43.216.129:80 CATTLE_CLUSTER_AGENT_PORT_80_TCP_ADDR=10.43.216.129 CATTLE_CLUSTER_AGENT_PORT_80_TCP_PORT=80 CATTLE_CLUSTER_AGENT_PORT_80_TCP_PROTO=tcp CATTLE_CLUSTER_AGENT_SERVICE_HOST=10.43.216.129 CATTLE_CLUSTER_AGENT_SERVICE_PORT=80 CATTLE_CLUSTER_AGENT_SERVICE_PORT_HTTP=80 CATTLE_CLUSTER_AGENT_SERVICE_PORT_HTTPS_INTERNAL=443 CATTLE_CLUSTER_REGISTRY= CATTLE_INGRESS_IP_DOMAIN=sslip.io CATTLE_INSTALL_UUID=d909f8d9-a76a-4ef6-bf4b-f26cc3adee84 CATTLE_INTERNAL_ADDRESS= CATTLE_IS_RKE=false CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cattle-cluster-agent-55cb88648-zlrx5 CATTLE_SERVER=https://127.0.0.1:8043 CATTLE_SERVER_VERSION=v2.7.1
INFO: Using resolv.conf: search cattle-system.svc.cluster.local svc.cluster.local cluster.local nameserver 10.43.0.10 options ndots:5
ERROR: https://127.0.0.1:8043/ping is not accessible (Failed to connect to 127.0.0.1 port 8043 after 0 ms: Connection refused)

我尝试在本机执行: curl https://127.0.0.1:8043/ping 成功返回pong,
但是进入容器内执行 curl https://127.0.0.1:8043/ping,出错:curl: (7) Failed to connect to 127.0.0.1 port 8043 after 0 ms: Connection refused。
我的resolv.conf如下:
# cat resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 10.151.6.6
nameserver 10.151.6.7

想请问大家遇到过这个我问题吗?
回复

发表评论:

电子邮件地址不会被公开。必填项已用 * 标注。
0 / 2048