从 2021 年 10 月初开始将项目迁移到 K3s 集群,掐指一算到现在也四个月了,使用过程中基本是大问题没有、小问题不断……
直到早上集群监控失效,搜索发现没有简单解法之后不得不选择重装。
复盘下操作:在一个低配置节点(2H4G 服务器)上部署新的 Docker 容器,本以为和平常一样,但是当发现服务报 Error 的时候实际上已经吃满 CPU 长达 3 到 4 分钟了,之后整个集群的监控就失效了。
使用中出现的问题
1、Rancher 页面上显示异常的容器重启次数
常见 100+ 重启次数,但是在页面刷新后就正常了。
2、监控 API 未就绪
也是我这次碰到的问题,集群监控的失效,导致无法查看各节点资源的实际占用情况,也无法新增对容器的监控。
重装集群
详细教程可以参考我这三篇文章:
- K3s 学习(一)高可用模式在 CentOS7 服务器上构建第一组 server + agent 节点
- K3s 学习(二)安装 Rancher Labs(Docker 安装,推荐)
- K3s 学习(三)Rancher 导入现有 K3s 集群并创建第一个容器应用
本次留下的命令和步骤仅作笔记用。
1、记录下当前集群中一些重要内容
包括:命名空间、服务发现(我基本就当做 DNS 来用)和PVC(我挂载了腾讯云的 COS)。
2、重装服务器
在云服务器厂商处建立快照,并重新安装操作系统,同时云数据库也做清空。
3、配置 server
服务器
设置数据库连接用的环境变量:
# 修改 profile 文件
vi /etc/profile
...
...
# MySQL 数据库
export K3S_DATASTORE_ENDPOINT="mysql://$username:[email protected](127.0.0.1:3306)/$database"
# 主节点的 Token
export K3S_TOKEN="K1082501c0eaxxxxxxxx77059a4fff524xxx589b9::server:1f2d8a3xxxxx7a1e2e4xxx60"
在
server
节点上执行以下命令获取K3S_TOKEN
:cat /var/lib/rancher/k3s/server/node-token
# 使环境变量生效
source /etc/profile
安装 server
节点:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server
4、配置 agent
服务器
设置 K3S_TOKEN
和 server
节点的链接环境变量:
# 修改 profile 文件
vi /etc/profile
...
...
# 在最末尾添加 server 节点的 node-token
export K3S_TOKEN="K1082501c0eaxxxxxxxx77059a4fff524xxx589b9::server:1f2d8a3xxxxx7a1e2e4xxx60"
# server 主节点的地址,端口默认为 6443
# 必须使用 HTTPS 协议:Only https:// URLs are supported for K3S_URL ip address
export K3S_URL="https://10.0.12.0:6443"
在
server
节点上执行以下命令获取K3S_TOKEN
:cat /var/lib/rancher/k3s/server/node-token
# 使环境变量生效
source /etc/profile
安装 agent
节点:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
5、确认集群安装完成
kubectl get nodes
6、安装 Rancher 面板
在 Rancher 服务器上运行:
docker run -d --name rancher \
--privileged \
--restart=unless-stopped \
-p 8080:80 -p 8443:443 \
-v /rab/ssl/rancher.k3s.com.pem:/etc/rancher/ssl/cert.pem \
-v /rab/ssl/rancher.k3s.com.key:/etc/rancher/ssl/key.pem \
-v /rab/docker/rancher/rancher:/var/lib/rancher \
-v /rab/docker/rancher/auditlog:/var/log/auditlog \
--privileged \
rancher/rancher:v2.6.3 \
--no-cacerts
在主节点上更新 DNS,以保证能将现有集群添加到 Rancher 中(IP 为 Rancher 服务所在的 IP):
kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"rancher.k3s.com"
],
"ip": "10.0.12.1"
}
]
}
}
}
}'
进阶配置
1、针对 Docker 容器吃满资源的情况做限制
在创建命名空间的时候设置即可,这样该空间下的所有容器都会被限制(1000 mCPUs 代表 1 核):
更多的待添加……
暂时结束。