update
This commit is contained in:
parent
0d63a4429d
commit
292220fe34
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "RockyLinux 8.5 安装 K3S"
|
title: "RockyLinux 8.5 安装 K3S"
|
||||||
date: 2020-06-25T14:21:00+08:00
|
date: 2020-06-25T14:21:00+08:00
|
||||||
lastmod: 2022-08-10T15:40:00+08:00
|
lastmod: 2023-09-08T12:32:00+08:00
|
||||||
keywords: []
|
keywords: []
|
||||||
tags: ["rancher", "k3s"]
|
tags: ["rancher", "k3s"]
|
||||||
categories: ["container"]
|
categories: ["container"]
|
||||||
@ -9,159 +9,173 @@ categories: ["container"]
|
|||||||
|
|
||||||
## 环境
|
## 环境
|
||||||
|
|
||||||
角色 | 主机名 | 操作系统 | 软件
|
角色 | 主机名 | IP | 操作系统 | 软件
|
||||||
---- | ---- | ---- | ----
|
---- | ---- | ---- | ---- | ----
|
||||||
数据库 | - | - | docker 20.10
|
镜像库 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | registry
|
||||||
k3s server | k3s-server0 | RockyLinux 8.5 | docker 20.10, k3s v1.23.9
|
数据库 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | mysql
|
||||||
k3s server | k3s-server1 | RockyLinux 8.5 | docker 20.10, k3s v1.23.9
|
负载均衡 | k3s-170 | 10.0.4.170 | RockyLinux 8.5 | nginx
|
||||||
k3s agent | k3s-agent0 | RockyLinux 8.5 | docker 20.10, k3s v1.23.9
|
k3s server | k3s-171 | 10.0.4.171 | RockyLinux 8.5 | k3s v1.27.4
|
||||||
k3s agent | k3s-agent1 | RockyLinux 8.5 | docker 20.10, k3s v1.23.9
|
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,设置时间同步**
|
- **全部服务器关闭 firewalld、selinux 和 swap,设置时间同步**
|
||||||
- **全部 k3s 服务器(除了数据库)必须设置唯一主机名**
|
- **全部 k3s 服务器(除了k3s-170)必须设置唯一主机名**
|
||||||
|
|
||||||
## 安装数据库
|
## 前期准备
|
||||||
- 在数据库服务器上执行如下操作
|
- 在 k3s-170 上执行如下操作
|
||||||
- 启动 docker 容器
|
- 安装 docker 环境,部署私有镜像库
|
||||||
```bash
|
- 安装 mysql,用来存储 k3s server 数据
|
||||||
docker run -d \
|
- 安装 nginx,四层均衡负载两个 k3s server
|
||||||
--name mysql \
|
- 下载 k3s 二进制文件和部署脚本
|
||||||
-p 3306:3306 \
|
|
||||||
-v /data/mariadb/binlog:/var/lib/mysql-bin \
|
## 安装私有镜像库
|
||||||
-v /data/mariadb/db:/var/lib/mysql \
|
- 在 k3s-170 上执行如下操作
|
||||||
-v /data/mariadb/log:/var/log/mysql \
|
- 修改 docker 配置,在 /etc/docker/daemon.json 中增加本机镜像库地址
|
||||||
harbor.colben.cn/general/mysql:8
|
```json
|
||||||
|
{
|
||||||
|
"insecure-registries": ["10.0.4.170:20080"]
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- 安装私有镜像库 registry,监听 http 20080
|
||||||
|
- 下载镜像列表文件
|
||||||
|
```bash
|
||||||
|
curl -LO https://github.com/k3s-io/k3s/releases/download/v1.27.4%2Bk3s1/k3s-images.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- 下载 k3s 系统镜像,推送到本机私有镜像库
|
||||||
|
```bash
|
||||||
|
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 数据库
|
- 创建 k3s 数据库
|
||||||
```bash
|
```bash
|
||||||
docker exec mysql mysql -e "
|
CREATE DATABASE k3s DEFAULT CHARSET UTF8MB4;
|
||||||
CREATE DATABASE k3s DEFAULT CHARSET UTF8MB4;
|
CREATE USER k3s@'%' IDENTIFIED BY 'K3s_1234';
|
||||||
CREATE USER k3s@'%' IDENTIFIED BY 'Password_1234';
|
GRANT ALL ON k3s.* TO k3s@'%';
|
||||||
GRANT ALL ON k3s.* TO k3s@'%';
|
```
|
||||||
"
|
|
||||||
|
## 安装负载均衡器
|
||||||
|
- 在 k3s-170 上执行如下操作
|
||||||
|
- 安装 nginx
|
||||||
|
- 配置 stream 四层转发
|
||||||
|
```
|
||||||
|
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)
|
||||||
|
```
|
||||||
|
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 服务器上
|
||||||
|
```
|
||||||
|
seq -f'10.0.4.%g' 171 175 | xargs -i scp k3s install-k3s.sh {}:/usr/local/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
## 安装 k3s server
|
## 安装 k3s server
|
||||||
- 在每台 k3s server 服务器上执行如下操作
|
- 在每台 k3s server 上执行如下操作
|
||||||
- 下载并安装 k3s
|
- 增加可执行权限
|
||||||
```bash
|
```
|
||||||
cd /usr/local/bin/
|
cd /usr/local/bin
|
||||||
curl -LO https://github.com/k3s-io/k3s/releases/download/v1.23.9%2Bk3s1/k3s
|
chmod 0755 k3s install-k3s.sh
|
||||||
chmod 0755 k3s
|
|
||||||
ln -s k3s kubectl
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 创建 systemd 服务文件 /etc/systemd/system/k3s-server.service,内容如下
|
- 创建私有镜像库配置文件
|
||||||
```ini
|
```
|
||||||
[Unit]
|
mkdir -p /etc/rancher/k3s
|
||||||
Description=Lightweight Kubernetes
|
cat >> /etc/rancher/k3s/registries.yaml <<-EOF
|
||||||
Documentation=https://k3s.io
|
mirrors:
|
||||||
Wants=network-online.target
|
docker.io:
|
||||||
After=network-online.target
|
endpoint:
|
||||||
|
- "http://10.0.4.170:20080"
|
||||||
[Install]
|
EOF
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
||||||
KillMode=process
|
|
||||||
Delegate=yes
|
|
||||||
LimitNOFILE=infinity
|
|
||||||
LimitNPROC=infinity
|
|
||||||
LimitCORE=infinity
|
|
||||||
TasksMax=infinity
|
|
||||||
TimeoutStartSec=0
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5s
|
|
||||||
SuccessExitStatus=1
|
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
|
||||||
ExecStart=/usr/local/bin/k3s \
|
|
||||||
server \
|
|
||||||
--docker \
|
|
||||||
--token "123456" \
|
|
||||||
--bind-address "0.0.0.0" \
|
|
||||||
--https-listen-port "6443" \
|
|
||||||
--cluster-cidr "10.42.0.0/16" \
|
|
||||||
--service-cidr "10.43.0.0/16" \
|
|
||||||
--pause-image "harbor.colben.cn/k3s/pause:3.6" \
|
|
||||||
--disable "coredns,servicelb,traefik,local-storage,metrics-server" \
|
|
||||||
--datastore-endpoint "mysql://k3s:Password_1234@tcp({mysql 地址}:{mysql 端口})/k3s"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 重载 systemd 系统服务,启动 k3s-server 服务
|
- 执行安装脚本
|
||||||
```bash
|
```
|
||||||
|
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 一行中的反斜杠(\\)全部去掉**,重载
|
||||||
|
```
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl start k3s-server
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 多个 k3s-server 服务可通过 keepalived 配置高可用,参考[keepalived 笔记](/post/keepalived/)
|
- 启动 k3s
|
||||||
|
```
|
||||||
|
systemctl start k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## 安装 k3s agent
|
## 安装 k3s agent
|
||||||
- 在每台 k3s agent 服务器上执行如下操作
|
- 在每台 k3s agent 上执行如下操作
|
||||||
- 下载并安装 k3s
|
- 增加可执行权限
|
||||||
```bash
|
```
|
||||||
cd /usr/local/bin/
|
cd /usr/local/bin
|
||||||
curl -LO https://github.com/k3s-io/k3s/releases/download/v1.23.9%2Bk3s1/k3s
|
chmod 0755 k3s install-k3s.sh
|
||||||
chmod 0755 k3s
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 创建 systemd 服务文件 /etc/systemd/system/k3s-agent.service,内容如下
|
- 创建私有镜像库配置文件
|
||||||
```ini
|
```
|
||||||
[Unit]
|
mkdir -p /etc/rancher/k3s
|
||||||
Description=Lightweight Kubernetes
|
cat >> /etc/rancher/k3s/registries.yaml <<-EOF
|
||||||
Documentation=https://k3s.io
|
mirrors:
|
||||||
Wants=network-online.target
|
docker.io:
|
||||||
After=network-online.target
|
endpoint:
|
||||||
|
- "http://10.0.4.170:20080"
|
||||||
[Install]
|
EOF
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
||||||
KillMode=process
|
|
||||||
Delegate=yes
|
|
||||||
LimitNOFILE=infinity
|
|
||||||
LimitNPROC=infinity
|
|
||||||
LimitCORE=infinity
|
|
||||||
TasksMax=infinity
|
|
||||||
TimeoutStartSec=0
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5s
|
|
||||||
SuccessExitStatus=1
|
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
|
||||||
ExecStart=/usr/local/bin/k3s \
|
|
||||||
agent \
|
|
||||||
--docker \
|
|
||||||
--token "123456" \
|
|
||||||
--server "https://{任一 server 地址或 server 高可用地址}:6443" \
|
|
||||||
--pause-image "harbor.colben.cn/k3s/pause:3.6" \
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 重载 systemd 系统服务,启动 k3s-agent 服务
|
- 执行安装脚本
|
||||||
```bash
|
```
|
||||||
systemctl daemon-reload
|
INSTALL_K3S_EXEC='agent --prefer-bundled-bin --server "https://10.0.4.170:6443"' \
|
||||||
systemctl start k3s-agent
|
INSTALL_K3S_SKIP_DOWNLOAD=true \
|
||||||
|
K3S_TOKEN=123456 \
|
||||||
|
install-k3s.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## 常用操作
|
## 常用操作
|
||||||
- 查看节点信息
|
- 在 k3s server 上查看节点信息
|
||||||
```bash
|
```bash
|
||||||
kubectl get nodes
|
kubectl get nodes
|
||||||
```
|
```
|
||||||
|
|
||||||
- 标记 server 节点不可调度
|
- 在 k3s server 上标记 server 节点不可调度
|
||||||
```bash
|
```bash
|
||||||
kubectl cordon k3s-server{0..1}
|
kubectl cordon k3s-{171..172}
|
||||||
```
|
```
|
||||||
|
|
||||||
- 设置 agent 节点的角色为 worker
|
- 在 k3s server 上设置 agent 节点的角色为 worker
|
||||||
```bash
|
```bash
|
||||||
kubectl label nodes k3s-agent{0..1} kubernetes.io/role=worker --overwrite
|
kubectl label nodes k3s-{173..175} kubernetes.io/role=worker --overwrite
|
||||||
```
|
```
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
- k3s 内部 ssl 证书有效期一年,可在到期前重启 k3s 集群轮换证书
|
- k3s 自签名 ca 证书有效期十年,客户端和服务器证书有效期一年
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user