需要部署一套特定版本的k3s和rancher做测试,做下笔记
节点全都是CentOS7
安装Docker
添加阿里docker-ce源
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo \ > /etc/yum.repos.d/docker-ce.repo
更新yum源
yum clean all yum makecache
安装docker-ce
yum -y install docker-ce-19.03.13-3.el7
配置docker镜像源
mkdir /etc/docker cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"] } EOF
启动docker,设置自启
systemctl daemon-reload systemctl start docker.service systemctl enable docker.service
安装k3s
下载k3s的安装脚本
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./get-k3s.sh chmod +x ./get-k3s.sh
执行安装脚本
cat ./get-k3s.sh | \ INSTALL_K3S_VERSION=v1.21.14+k3s1 \ INSTALL_K3S_MIRROR=cn \ sh -s - server --docker
查看集群状态
[root@rancher ~]# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system helm-install-traefik-crd-w9vgm 0/1 Completed 0 5h53m kube-system local-path-provisioner-84bb864455-ksl6d 1/1 Running 1 5h53m ... [root@rancher ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3f66d6658e6 746788bcc27e "entry" 10 minutes ago Up 10 minutes k8s_lb-port-443_svclb-traefik-dhxnx_kube-system_c3329683-b15d-43f0-abc3-d3da846aaa44_1 9d2ac74ebfb6 746788bcc27e "entry" 10 minutes ago Up 10 minutes k8s_lb-port-80_svclb-traefik-dhxnx_kube-system_c3329683-b15d-43f0-abc3-d3da846aaa44_1 ...
如果这里kubectl看到pod,而docker看不到容器,则说明k3s的安装有问题,cri调用containerd而不是docker了,需要检查第二步的脚本最后的参数是否正确,并重新安装
安装helm
下载helm二进制文件,解压并移动到bin目录
wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz tar -xvf ./helm-v3.12.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状态
[root@rancher ~]# helm list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION traefik kube-system 1 2023-07-12 00:42:20.545370487 +0000 UTC deployed traefik-10.14.100 2.6.0 traefik-crd kube-system 1 2023-07-12 00:42:04.022287234 +0000 UTC deployed traefik-crd-10.14.100
通过helm部署rancher
添加helm镜像源
helm repo add rancher-stable https://rancher-mirror.rancher.cn/server-charts/stable
创建命名空间
kubectl create namespace cattle-system
安装cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
安装rancher
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.local \ --set replicas=1 \ --version 2.5.15
- rancher初始化
等待rancher的pod全都起来,通过上一步设置的域名登录rancher控制台,没有域名改本地的hosts文件也行,local域名有限制不能直接保存,浏览器f12用开发者工具把按钮的disable去掉就可以保存了
创建新的k3s集群
环境要求rancher所在集群独立于其他集群,故需要创建另一套专门的k3s集群,并接入到rancher中管理
先给一个节点参照上面的流程安装k3s,作为新集群的master
给节点的hosts添加域名,因为用的是本地域名,需要在新节点加一下
cat >> /etc/hosts << EOF 192.168.50.231 rancher.local EOF
修改coredns的配置文件
因为节点的hosts文件在k3s集群内不生效,导致容器无法访问到rancher.local,需要修改集群coredns的配置文件来实现本地域名解析kubectl edit -n kube-system configmaps coredns
apiVersion: v1 data: Corefile: | .:53 { ... } NodeHosts: | 0.0.0.0 master01 <ip to rancher> rancher.local
加上域名后重启一下coredns
kubectl delete -n kube-system pods coredns-<id> --force --grace-period 0
到rancher中添加集群,获取命令并执行
kubectl apply -f https://rancher.local/v3/import/<id>.yaml
这里记一个大坑,k3s对证书的处理应该是有问题的,会导致Rancher接入新集群时出现x509证书问题,参考这个 链接
链接里老哥解决方法也很粗暴,直接重装Rancher且不安装cert-manager
我直接重装了,cert-manage也还是装了,好了
重装解决一切问题,如果没有,那就再装一遍🤡
添加Worker节点到k3s集群中
获取集群的Token
在master节点上执行以下命令获取Tokencat /var/lib/rancher/k3s/server/node-token
按之前写的下载k3s安装脚本,填入Master ip和Token并执行
cat ./get-k3s.sh | \ INSTALL_K3S_VERSION=v1.21.14+k3s1 \ INSTALL_K3S_MIRROR=cn \ K3S_URL=https://<Master Node IP>:6443 \ K3S_TOKEN=<token> \ sh -s - --docker
查看节点加入状态
[root@master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane,master 68m v1.21.14+k3s1 worker01 Ready <none> 14s v1.21.14+k3s1