K3S 私有集群单点部署与Dashboard安装

安装基础

本文基于虚拟化CentOS7与内网测试环境。官方也有完整的运行脚本与文档。开贴仅为记录部署过程留档与未来功能扩展升级的文档基石。

1. 防火墙设置

首先应按照部署环境考虑端口组开放情况,对于完全内网环境可以直接关闭防火墙避免端口忘记开放倒是无法连通(同时也是官方推荐的做法)

systemctl disable firewalld --now

或者开放6443端口与其他必要端口

firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
firewall-cmd --query-port=6443/tcp
TCP	6443	    K3s agent 节点	           Kubernetes API Server
UDP	8472	    K3s server 和 agent 节点	   仅对 Flannel VXLAN 需要
UDP	51820	    K3s server 和 agent 节点	   只有 Flannel Wireguard 后端需要
UDP	51821	    K3s server 和 agent 节点	   使用 IPv6 的 Flannel Wireguard 后端需要
TCP	10250	    K3s server 和 agent 节点	   Kubelet metrics
TCP	2379-2380   K3s server 节点	           只有嵌入式 etcd 高可用才需要

2. (可选)换用Docker作为容器组件

按照Docker官方文档部署Docker并换用国内镜像源

sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 wget
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sudo yum makecache fast
sudo yum install -y docker-ce
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl restart docker
sudo docker --version

将写入安装配置信息到/etc/rancher/k3s/config.yaml文件或使用安装参数接入docker,使用方法参考官方文档:文档链接

单点安装

单点部署属于最简单的一种安装方式

1. K3S server节点(master)安装

个人建议使用在安装配置文件中写入安装参数的方式定制化安装K3S,在完成配置文件的编辑后运行

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
cat /var/lib/rancher/k3s/server/node-token  # 获取随机生成的TOKEN

2. K3S agent节点(worker)安装

在worker节点的安装时,需要确定master接入点,即一个指向master的IP、域名或者四层均衡负载(L4 switch),worker会一直用过这个固定的接入点与master联系,如果master(单点或集群)的接入点发生变化,worker节点就会丢失主节点,可手动恢复,但是比较麻烦。

K3S_TOKEN=K1099ade7338...c36f33de39::server:76186cb47adedb6e87324e0fc6ffce2a
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://10.10.1.51:6443 K3S_TOKEN=${K3S_TOKEN} sh -

3. K3S 镜像下载加速(添加镜像源)

K3S默认使用containerd作为容器运行时,为了避免直接从海外镜像源中下载容器镜像,需要修改k3s的运行配置。并且需要在所有节点都进行修改并重启k3s服务。

在路径/var/lib/rancher/k3s/agent/etc/containerd下,将config.toml复制为config.toml.tmpl并添加以下内容到文件结尾。

至于为什么要复制,而不是修改,可以在官方文档中找到。网页链接

[plugins.cri.registry.mirrors]
  [plugins.cri.registry.mirrors."docker.io"]
    endpoint = ["https://docker.mirrors.ustc.edu.cn"]

在所有节点上修改后,重启K3S服务以生效

4. 重启K3S服务

重启server节点(master):systemctl restart k3s

重启agent节点(worker):systemctl restart k3s-agent

中断服务:/usr/local/bin/k3s-killall.sh

服务卸载:/usr/local/bin/k3s-uninstall.sh

5. 修正work标签

worker节点在安装完成并上线运行后,通过kubectl get nodes查看时,worker节点的ROLES列为none。该问题不是特别影响使用,但是如果需要修复这个问题,可执行以下内容(注意替换节点名称)

kubectl label node ${node_name} node-role.kubernetes.io/worker=worker

修改后效果

[root@k3s-master ~]# kubectl get nodes
NAME          STATUS   ROLES                  AGE   VERSION
k3s-worker1   Ready    worker                 41h   v1.23.8+k3s2
k3s-worker2   Ready    worker                 41h   v1.23.8+k3s2
k3s-master    Ready    control-plane,master   41h   v1.23.8+k3s2

6. 基本信息

在安装完成后会输出以下信息(安装留档)

kubectl cluster-info 输出的默认信息

Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy

kubectl get pod,svc -n kube-system 输出的默认信息

NAME                                          READY   STATUS      RESTARTS   AGE
pod/coredns-d76bd69b-pzrxw                    1/1     Running     0          16h
pod/local-path-provisioner-6c79684f77-5zt97   1/1     Running     0          16h
pod/helm-install-traefik-crd-t296j            0/1     Completed   0          16h
pod/helm-install-traefik-4cgcm                0/1     Completed   1          16h
pod/svclb-traefik-4a9a12c2-tz829              2/2     Running     0          16h
pod/metrics-server-7cd5fcb6b7-77qzl           1/1     Running     0          16h
pod/traefik-df4ff85d6-vv8dt                   1/1     Running     0          16h
pod/svclb-traefik-4a9a12c2-4n2rv              2/2     Running     0          16h
pod/svclb-traefik-4a9a12c2-qbsx2              2/2     Running     0          16h

NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP                        PORT(S)                      AGE
service/kube-dns         ClusterIP      10.43.0.10      <none>                             53/UDP,53/TCP,9153/TCP       16h
service/metrics-server   ClusterIP      10.43.128.159   <none>                             443/TCP                      16h
service/traefik          LoadBalancer   10.43.206.158   10.10.1.51,10.10.1.56,10.10.1.57   80:30393/TCP,443:31186/TCP   16h

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注