RockyLinux 8.5 安装 K3S
文章目录
环境
角色 | 主机名 | IP | 操作系统 | 软件 |
---|---|---|---|---|
镜像库 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | registry |
数据库 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | mysql |
负载均衡 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | nginx |
k3s server | k3s-171 | 10.0.4.171 | RockyLinux 8.5 | k3s v1.27.4 |
k3s server | k3s-172 | 10.0.4.172 | RockyLinux 8.5 | k3s v1.27.4 |
k3s agent | k3s-173 | 10.0.4.173 | RockyLinux 8.5 | k3s v1.27.4 |
k3s agent | k3s-174 | 10.0.4.174 | RockyLinux 8.5 | k3s v1.27.4 |
k3s agent | k3s-175 | 10.0.4.175 | RockyLinux 8.5 | k3s v1.27.4 |
前期准备
- 全部服务器关闭 firewalld、selinux 和 swap,设置时间同步
- 全部 k3s 服务器(除了k3s-170)必须设置唯一主机名
- 在 k3s-170 上执行如下操作
- 安装 docker 环境,部署私有镜像库
- 安装 mysql,用来存储 k3s server 数据
- 安装 nginx,四层均衡负载两个 k3s server
- 下载 k3s 二进制文件和部署脚本
安装私有镜像库
-
在 k3s-170 上执行如下操作
-
修改 docker 配置,在 /etc/docker/daemon.json 中增加本机镜像库地址
1 2 3
{ "insecure-registries": ["10.0.4.170:20080"] }
-
安装私有镜像库 registry,监听 http 20080
-
下载镜像列表文件
1
curl -LO https://github.com/k3s-io/k3s/releases/download/v1.27.4%2Bk3s1/k3s-images.txt
-
下载 k3s 系统镜像,推送到本机私有镜像库
1 2 3 4 5
for image in $(cat k3s-images.txt); do docker pull $image docker tag $image ${image/#docker.io/10.0.4.170:20080} docker push ${image/#docker.io/10.0.4.170:20080} done
安装数据库
- 在 k3s-170 上执行如下操作
- 安装 mysql
- 创建 k3s 数据库
1 2 3
CREATE DATABASE k3s DEFAULT CHARSET UTF8MB4; CREATE USER k3s@'%' IDENTIFIED BY 'K3s_1234'; GRANT ALL ON k3s.* TO k3s@'%';
安装负载均衡器
- 在 k3s-170 上执行如下操作
- 安装 nginx
- 配置 stream 四层转发
1 2 3 4 5 6 7 8 9 10
stream { upstream k3s_servers { server 10.0.4.171:6443; server 10.0.4.172:6443; } server { listen 6443; proxy_pass k3s_servers; } }
分发 k3s 部署文件
-
在 k3s-170 上执行如下操作
-
下载安装脚本(install-k3s.sh)和可执行文件(k3s)
1 2
curl -Lo install-k3s.sh get.k3s.io curl -LO https://github.com/k3s-io/k3s/releases/download/v1.27.4%2Bk3s1/k3s
-
把安装脚本和二进制文件分发到每台 k3s server 和 k3s agent 服务器上
1
seq -f'10.0.4.%g' 171 175 | xargs -i scp k3s install-k3s.sh {}:/usr/local/bin
安装 k3s server
-
在每台 k3s server 上执行如下操作
-
增加可执行权限
1 2
cd /usr/local/bin chmod 0755 k3s install-k3s.sh
-
创建私有镜像库配置文件
1 2 3 4 5 6 7
mkdir -p /etc/rancher/k3s cat >> /etc/rancher/k3s/registries.yaml <<-EOF mirrors: docker.io: endpoint: - "http://10.0.4.170:20080" EOF
-
执行安装脚本
1 2 3 4 5
INSTALL_K3S_EXEC='server --prefer-bundled-bin --disable "coredns,servicelb,traefik,local-storage,metrics-server" --datastore-endpoint="mysql://k3s:K3s_1234@tcp(10.0.4.170:3306)/k3s"' \ INSTALL_K3S_SKIP_DOWNLOAD=true \ INSTALL_K3S_SKIP_START=true \ K3S_TOKEN=123456 \ install-k3s.sh
-
修改 /etc/systemd/system/k3s.service,把 mysql 一行中的反斜杠(\)全部去掉,重载
1
systemctl daemon-reload
-
启动 k3s
1
systemctl start k3s
安装 k3s agent
-
在每台 k3s agent 上执行如下操作
-
增加可执行权限
1 2
cd /usr/local/bin chmod 0755 k3s install-k3s.sh
-
创建私有镜像库配置文件
1 2 3 4 5 6 7
mkdir -p /etc/rancher/k3s cat >> /etc/rancher/k3s/registries.yaml <<-EOF mirrors: docker.io: endpoint: - "http://10.0.4.170:20080" EOF
-
执行安装脚本
1 2 3 4
INSTALL_K3S_EXEC='agent --prefer-bundled-bin --server "https://10.0.4.170:6443"' \ INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_TOKEN=123456 \ install-k3s.sh
常用操作
-
在 k3s server 上查看节点信息
1
kubectl get nodes
-
在 k3s server 上标记 server 节点不可调度
1
kubectl cordon k3s-{171..172}
-
在 k3s server 上设置 agent 节点的角色为 worker
1
kubectl label nodes k3s-{173..175} kubernetes.io/role=worker --overwrite
注意事项
- k3s 自签名 ca 证书有效期十年,客户端和服务器证书有效期一年
文章作者 Colben
上次更新 2023-09-08