K3S 从放弃到入门(一) 先装起来

本篇文章记录自己手动安装K3S的过程。本次测试环境为两台轻量应用服务器,配置分别为2核4G、4核4G,系统镜像选择CentOS 8.2

规划是在2核4G服务器上面部署主节点、在4核4G服务器上面部署从节点。

文件准备

因为国内网络环境复杂,在线安装下载相关文件缓慢、甚至无法下载,所以本次安装方式为离线安装。需要提前下载相关文件,并上传到服务器上,进行离线安装。

首先去这个地方,选择一个自己喜欢的版本下载,我这里选择的是v1.23.4+k3s1

其次,还需要访问https://get.k3s.io/,把安装脚本下载下来,保存为 install.sh

开始安装

开放端口:主节点需要开放TCP:6443 TCP:10250 UDP:8472 三个端口,从节点需要开放UDP:8472 TCP:10250 端口。都只需要内网开放就行了。
敲命令:

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/

主节点运行:

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh --node-name master

等上一小会儿,获取token:

cat /var/lib/rancher/k3s/server/token

从节点运行:

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

运行命令:

kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

使用命令获取token:

kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'

用获取到的token,访问https://{masterip}:32008/#/login 就可以登录dashboard了。其中{masterip}是主节点的外网IP地址。

完结,撒花!

Back to Top