K3s+Rancher构建轻量k8s集群

默认分类 · 2023-10-19

家里的机器资源有点空闲了,之前用Docker跑服务每次要升级都要重新敲命令,比较麻烦,准备开个虚拟机跑个轻量K8s,把原来用Docker跑的服务全部迁移到上面,顺便再装个Rancher做图形化界面,方便之后做容器升级等操作,K8s的cronjob也能做比较复杂的定时任务。

先介绍下环境:

环境版本
虚拟机OSRocky8.8
Rancher2.7.6
K3s1.26.9+k3s1

0. 初始化

这一块就不详细写了,Rocky8和CentOS7差不多,装好之后记得关闭SELinux和Firewalld就行


1. 下载K3s安装脚本,安装K3s

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./k3s-install.sh
chmod +x ./k3s-install.sh
cat ./k3s-install.sh | \
 INSTALL_K3S_VERSION=v1.26.9+k3s1 \
 INSTALL_K3S_MIRROR=cn \
 sh -s - server

这里就没有继续使用Docker作为底层cri了,而是使用默认的containerd
containerd的管理可以通过crictl工具进行,基本操作和Docker是一样的,可以参考k8s的文档:链接

这里再补一个containerd导入私有镜像的方法,crictl不带这个功能,不能像docker一样直接导入

ctr image import ./image.tgz

参考K3s的文档来配置containerd的镜像源: 链接

cat > /etc/rancher/k3s/registries.yaml << EOF
mirrors:
  docker.io:
    endpoint:
      - "https://docker.mirrors.sjtug.sjtu.edu.cn"
EOF

重启K3s

systemctl restart k3s

2. 安装Helm

下载、解压Helm

wget https://get.helm.sh/helm-v3.13.1-linux-amd64.tar.gz
tar -xvf ./helm-v3.13.1-linux-amd64.tar.gz
cp ./linux-amd64/helm /usr/bin/

设置环境变量

cat >> /etc/profile << EOF
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
EOF
source /etc/profile

查看helm状态,看到有k3s部署的helm应用即说明helm安装成功

[root@k3s ~]# helm list -A
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
traefik         kube-system     1               2023-10-19 06:29:55.080365796 +0000 UTC deployed        traefik-21.2.1+up21.2.0         v2.9.10    
traefik-crd     kube-system     1               2023-10-19 06:29:53.30597641 +0000 UTC  deployed        traefik-crd-21.2.1+up21.2.0     v2.9.10    

3. 安装Rancher

添加Rancher的Helm仓库

helm repo add rancher-stable https://rancher-mirror.rancher.cn/server-charts/stable

创建Rancher的命名空间

kubectl create namespace cattle-system

安装cert-manager

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.crds.yaml

安装Rancher,根据情况修改域名和超管密码

helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.domain.local \
  --set bootstrapPassword=changeme \
  --version 2.7.6

等待Rancher的pod都跑起来,通过设置的域名和密码访问Rancher管理页面
rancher.jpg

Theme Jasmine by Kent Liao