本篇文章记录自己手动安装K3S的过程。本次测试环境为两台轻量应用服务器,配置分别为2核4G、4核4G,系统镜像选择CentOS 8.2
规划是在2核4G服务器上面部署主节点、在4核4G服务器上面部署从节点。
文件准备
因为国内网络环境复杂,在线安装下载相关文件缓慢、甚至无法下载,所以本次安装方式为离线安装。需要提前下载相关文件,并上传到服务器上,进行离线安装。
首先去这个地方,选择一个自己喜欢的版本下载,我这里选择的是v1.23.4 k3s1:
其次,还需要访问https://get.k3s.io/,把安装脚本下载下来,保存为 install.sh
开始安装
开放端口:主节点需要开放TCP:6443 UDP:8472两个端口,从节点需要开放UDP:8472端口。都只需要内网开放就行了。
敲命令:
代码语言:shell复制gunzip k3s-airgap-images-amd64.tar.gz #解压缩
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
chmod a x k3s install.sh
sudo cp k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
sudo cp k3s /usr/local/bin/
主节点运行:
代码语言:shell复制INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh --node-name master
等上一小会儿,获取token:
代码语言:shell复制cat /var/lib/rancher/k3s/server/token
从节点运行:
代码语言:shell复制INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://{masterip}:6443 K3S_TOKEN={token} ./install.sh --node-name slave-01
其中,{serverip}为主节点内网地址的IP,{token}是上一步获取到的token
运行命令kubectl get nodes
,查看下安装是否成功:
安装dashboard
首先需要下载这个文件到本地https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
运行命令kubectl apply -f recommended.yaml
,稍等片刻就安装完了。
外网访问dashboard
这里先临时采用将 serverice 改成 nodeport 的方式。
运行命令kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
将service的type改成NodePort
如果没有指定端口号,系统会随机选择一个端口,使用命令kubectl get service -n kubernetes-dashboard
查看下端口号,我这里是32008,在轻量后台放行TCP:32008。
准备俩文件:
dashboard.admin-user.yml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
dashboard.admin-user-role.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
运行命令:
代码语言:shell复制kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml
使用命令获取token:
代码语言:shell复制kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'
用获取到的token,访问https://{masterip}:32008/#/login 就可以登录dashboard了。其中{masterip}是主节点的外网IP地址。
完结,撒花!