个人技术空间

Ubuntu部署k3s

系统版本:Ubuntu 22.04
k3s版本:v1.28.2+k3s1

环境安装

我使用的docker作为容器的运行时,所以需要先安装docker

apt-get -y update && \
apt-get -y install docker.io=20.10.* && \
systemctl enable docker  --now 
systemctl status docker.service  --no-pager -l

K3S相关程序下载

在K3S官网中,可以用脚本一键安装,但是下载资源非常缓慢,所以我这里使用离线安装的方式。
首先从github上下载相关的镜像及bin文件
https://github.com/k3s-io/k3s/releases

#可以使用代理加速下载
wget  -c "https://get.k3s.io" -O install.sh
wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s"
wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s-airgap-images-amd64.tar.gz"
wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s-images.txt"
wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/sha256sum-amd64.txt"

安装K3S

首先设置一下相关配置

docker:以docker模式启动  
tls-san:如果你后续要建K3S集群,或者跨机器访问集群的话,这里最好配置一个公网的地址,或者域名。如果不需要可以删除此配置。如果使用公网地址记得开防火墙策略放行。  
service-node-port-range:使用nodeport模式时可用端口范围。  
kubelet-arg:这里都是一些系统预留资源相关的配置,具体参考K3S或者K8S官网介绍吧。  
mkdir -p /etc/rancher/k3s/
tee /etc/rancher/k3s/config.yaml <<-'EOF'
docker: true
tls-san: k3s.domain.com
service-node-port-range: 30000-40000
kubelet-arg: system-reserved=cpu=500m,memory=512Mi,ephemeral-storage=1024Mi,pid=100
kubelet-arg: kube-reserved=cpu=500m,memory=512Mi,ephemeral-storage=1024Mi,pid=100
kubelet-arg: eviction-hard=memory.available<1024Mi,nodefs.available<10%,imagefs.available<10%
kubelet-arg: eviction-minimum-reclaim=memory.available=500Mi,nodefs.available=500Mi,imagefs.available=500Mi
EOF

导入镜像及安装
以下操作在刚刚下载K3S相关程序的目录中执行

#导入刚刚下载的镜像
docker load -i k3s-airgap-images-amd64.tar.gz

#拷贝K3S到bin目录
cp -f k3s /usr/local/bin/

#设置执行权限
chmod 700 /usr/local/bin/k3s
chmod 700 install.sh

#执行install.sh脚本安装
#INSTALL_K3S_SKIP_DOWNLOAD指的是跳过下载,直接使用系统里已有的文件
INSTALL_K3S_SKIP_DOWNLOAD=true  ./install.sh

执行完成后稍等片刻,执行kubectl get pod -A命令能看到pod的运行状态说明安装成功了。

从其他机器访问K3s集群

拷贝/etc/rancher/k3s/k3s.yaml文件到客户端机器的~/.kube/config文件中
修改config文件中的server地址,将127.0.0.1改为域名或公网IP(前提是在上面配置文件中指定了tls-san公网地址,不然会报证书错误)
server: https://k3s.domain.com:6443

版权声明:署名-非商业性使用-禁止演绎 3.0 未本地化版本 (CC BY-NC-ND 3.0)