K3s + Rancher 安装笔记

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

相关文章:

暂无相关文章

评论:

没事造轮子

不错,感觉我也可以再折腾折腾我的博客!

gocpplua

本机 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

本机 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

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

发表评论: