banner
NEWS LETTER

K3s部署高可用集群

Scroll down

本文作者:丁辉

K3s部署高可用集群

Github仓库

中文官方文档

K3s基础环境准备官方文档

节点名称 IP 角色
k3s-master-1 192.168.1.10 control-plane,etcd,master
k3s-master-2 192.168.1.20 control-plane,etcd,master
k3s-master-3 192.168.1.30 control-plane,etcd,master
k3s-worker-1 192.168.1.40 worker

Master节点VIP: 192.168.1.100

集群数据存储配置

高可用嵌入式 etcd

开始部署管理节点

所有变量参数解释

集群负载均衡器

  • 国外源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -sfL https://get.k3s.io | \
    K3S_NODE_NAME=k3s-master-1 \
    K3S_KUBECONFIG_OUTPUT=~/.kube/config \
    K3S_KUBECONFIG_MODE=644 \
    K3S_TOKEN=SECRET \
    INSTALL_K3S_EXEC="--node-taint k3s-controlplane=true:NoExecute" \
    sh -s - server \
    --cluster-init \
    --tls-san 192.168.1.100
  • 国内源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
    K3S_NODE_NAME=k3s-master-1 \
    K3S_KUBECONFIG_OUTPUT=~/.kube/config \
    K3S_KUBECONFIG_MODE=644 \
    K3S_TOKEN=SECRET \
    INSTALL_K3S_EXEC="--node-taint k3s-controlplane=true:NoExecute" \
    sh -s - server \
    --cluster-init \
    --tls-san 192.168.1.100

    该参数用于指定 k3s 系统组件(如 kube-apiserver、kube-controller-manager 等)使用的默认镜像仓库地址。(阿里同步较慢有时会获取不到最新镜像)

    1
    >K3S_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com

参数解释

参数 解释
K3S_NODE_NAME 指定 K3s 安装节点的名称。在这个例子中,设置为 k3s-master-1,表示安装的节点将被命名为 k3s-master-1
K3S_KUBECONFIG_OUTPUT 指定 K3s 安装完成后生成的 kubeconfig 文件的输出路径。在这个例子中,设置为 ~/.kube/config,表示 kubeconfig 文件将保存在当前用户的主目录下的 .kube 目录中,文件名为 config
K3S_KUBECONFIG_MODE 指定生成的 kubeconfig 文件的权限模式。在这个例子中,设置为 644,表示生成的 kubeconfig 文件权限模式为 -rw-r--r--,即当前用户有读写权限,其他用户只有读权限。
K3S_TOKEN 配置共享 secret
INSTALL_K3S_EXEC=”–node-taint k3s-controlplane=true:NoExecute” controlplane节点禁止调度
–cluster-init 使用嵌入式 Etcd 初始化新集群
–tls-san 在 TLS 证书上添加其他主机名或 IPv4/IPv6 地址作为 Subject Alternative Name
INSTALL_K3S_MIRROR 该参数用于指定 k3s 安装过程中下载软件包和镜像的镜像站点。

添加管理节点[2,3节点同理]

  • 国外源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -sfL https://get.k3s.io | \
    K3S_NODE_NAME=k3s-master-2 \
    K3S_KUBECONFIG_OUTPUT=~/.kube/config \
    K3S_KUBECONFIG_MODE=644 \
    K3S_TOKEN=SECRET \
    INSTALL_K3S_EXEC="--node-taint k3s-controlplane=true:NoExecute" \
    sh -s - server \
    --server https://192.168.1.100:6443 \
    --tls-san 192.168.1.100
  • 国内源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
    K3S_NODE_NAME=k3s-master-2 \
    K3S_KUBECONFIG_OUTPUT=~/.kube/config \
    K3S_KUBECONFIG_MODE=644 \
    K3S_TOKEN=SECRET \
    INSTALL_K3S_EXEC="--node-taint k3s-controlplane=true:NoExecute" \
    sh -s - server \
    --server https://192.168.1.100:6443 \
    --tls-san 192.168.1.100

添加计算节点

在管理节点获取 ${node-token}

1
cat /var/lib/rancher/k3s/server/node-token
  • 国外源

    1
    2
    3
    4
    5
    curl -sfL https://get.k3s.io | \
    K3S_NODE_NAME=k3s-worker-1 \
    K3S_URL=https://192.168.1.100:6443 \
    K3S_TOKEN=${node-token} \
    sh -s - agent
  • 国内源

    1
    2
    3
    4
    5
    curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
    K3S_NODE_NAME=k3s-worker-1 \
    K3S_URL=https://192.168.1.100:6443 \
    K3S_TOKEN=${node-token} \
    sh -s - agent

计算节点添加角色标签

1
kubectl label node ${node} node-role.kubernetes.io/worker=true --overwrite

--overwrite 强制覆盖

卸载

卸载 Server

  1. 删除 Server 节点

    1
    kubectl delete node ${node}
  2. 停止 Server

    1
    k3s-killall.sh
  3. 卸载 Server

    1
    k3s-uninstall.sh

卸载 Agent

  1. 删除 Agent 节点

    1
    kubectl delete node ${node}
  2. 停止 K3s-Agent

    1
    k3s-killall.sh
  3. 卸载 K3s-Agent

    1
    k3s-agent-uninstall.sh

I'm so cute. Please give me money.

其他文章
cover
K3s部署禁用自带附加组件
  • 70/01/01
  • 00:00
  • Kubernetes-部署文档
cover
Rancher组件公开Metrics访问
  • 70/01/01
  • 00:00
  • Kubernetes-部署文档
目录导航 置顶
  1. 1. K3s部署高可用集群
    1. 1.1. 开始部署管理节点
    2. 1.2. 添加管理节点[2,3节点同理]
    3. 1.3. 添加计算节点
    4. 1.4. 卸载
      1. 1.4.1. 卸载 Server
      2. 1.4.2. 卸载 Agent
请输入关键词进行搜索