|
一、RKE介绍
1、介绍:RKE是经过CNCF认证的Kubernetes发行版,并且全部组件完全在Docker容器内运行
Rancher Server只能在使用RKE或K3s安装的Kubernetes集群中运行
2、节点环境准备
- firewall-cmd --permanent --add-port=22/tcp
- firewall-cmd --permanent --add-port=80/tcp
- firewall-cmd --permanent --add-port=443/tcp
- firewall-cmd --permanent --add-port=30000-32767/tcp
- firewall-cmd --permanent --add-port=30000-32767/udp
- firewall-cmd --reload
复制代码 2、同步节点时间
- yum install ntpdate -y
- ntpdate time.windows.com
复制代码 3、安装docker
- 任何运行Rancher Server的节点上都需要安装Docker
- sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- sudo yum-config-manager --add-repo <a href="https://download.docker.com/linux/centos/docker-ce.repo" target="_blank">https://download.docker.com/linux/centos/docker-ce.repo</a>
- sudo yum install docker-ce-18.09.3-3.el7
复制代码 4、安装kubectl
- <span style="background-color: rgb(255, 255, 255);">c</span>at << EOF > /etc/yum.repos.d/kubernetes.repo
- [kubernetes]
- name=Kubernetes
- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=1
- repo_gpgcheck=1
- gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg <a href="https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg" target="_blank">https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</a>
- EOF
- sudo yum install -y kubectl
复制代码 5、安装RKE
- Rancher Kubernetes Engine用于构建Kubernetes集群的CLI
- 下载地址: <a href="https://github.com/rancher/rke/releases/tag/v1.1.3" target="_blank">https://github.com/rancher/rke/releases/tag/v1.1.3</a>
- mv rke_linux-amd64 rke
- chmod +x rke
- mv rke /usr/local/bin
- rke
复制代码 6、安装Helm
- Kubernetes的软件包管理工具
- 下载地址:<a href="https://github.com/helm/helm" target="_blank">https://github.com/helm/helm</a>
- tar -zxvf helm-v3.3.1-linux-amd64.tar.gz
- cd linux-amd64
- mv helm /usr/local/bin
- chown -R admin:admin /usr/local/bin/helm
- helm version
复制代码 7、配置ssh免密连接
- 用户加入docker用户组,让其可以执行docker命令
- sudo usermod -aG docker admin
- 切换成admin用户,在执行rke up命令的主机上执行创建ssh公私钥 并把公钥分发到各个节点上
- ssh-keygen -t rsa
- ssh-copy-id 192.168.112.120
- ssh-copy-id 192.168.112.121
复制代码 8、配置操作系统参数支持k8s集群 (所有节点上都要执行)
- sudo swapoff -a
- sudo vi /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- net.bridge.bridge-nf-call-ip6tables = 1
- net.bridge.bridge-nf-call-iptables = 1
- sudo sysctl -p
复制代码 9、使用rke创建集群初始化配置文件
10、部署
11、设置环境变量
- export KUBECONFIG=/home/admin/kube_config_cluster.yml
- mkdir ~/.kube
- cp kube_config_cluster.yml ~/.kube/config
- 通过RKE安装k8s集群成功,启动的时候有些节点启动的比较慢。需要稍微等待一段时间.
- 可以先找一台网络好一点的,pull全部镜像,再保存到本地,cp到所有主机
- docker save -o images.tgz `docker images|awk 'NR>1 {print $1":"$2}'`
复制代码 二、RKE的环境清理
1、rancher-node-1,2,3中分别执行以下命令
- mkdir rancher
- cat > rancher/clear.sh << EOF
- df -h|grep kubelet |awk -F % '{print $2}'|xargs umount
- rm /var/lib/kubelet/* -rf
- rm /etc/kubernetes/* -rf
- rm /var/lib/rancher/* -rf
- rm /var/lib/etcd/* -rf
- rm /var/lib/cni/* -rf
- rm -rf /var/run/calico
- iptables -F && iptables -t nat -F
- ip link del flannel.1
- docker ps -a|awk '{print $1}'|xargs docker rm -f
- docker volume ls|awk '{print $2}'|xargs docker volume rm
- rm -rf /var/etcd/
- rm -rf /run/kubernetes/
- docker rm -fv $(docker ps -aq)
- docker volume rm $(docker volume ls)
- rm -rf /etc/cni
- rm -rf /opt/cni
- systemctl restart docker
- EOF
- sh rancher/clear.sh 清理脚本
复制代码 2、清理残留目录结束。如果还有问题可能需要卸载所有节点上的docker
- 首先查看Docker版本
- # yum list installed | grep docker
- docker-ce.x86_64 18.05.0.ce-3.el7.centos @docker-ce-edge
-
- 执行卸载
- # yum -y remove docker-ce.x86_64
-
- 删除存储目录
- # rm -rf /etc/docker
- # rm -rf /run/docker
- # rm -rf /var/lib/dockershim
- # rm -rf /var/lib/docker
- 如果发现删除不掉,需要先 umount,如
- # umount /var/lib/docker/devicemapper
- 卸载docker
- rke up --config=./rancher-cluster.yml rke启动执行是幂等操作的 有时候需要多次执行才能成功
复制代码 3、rke多次安装和卸载k8s集群问题
启动的时候提示ectd的集群健康检查失败
清空节点上所有k8s的相关目录。卸载和删除docker所有相关目录。重新安装docker
最后在执行rke启动命令
三、扩容节点,缩容节点
1、添加节点
- 修改cluster.yal 将需要添加的节点配置,然后运行
- more cluster.yml
- nodes:
- - address: 172.20.101.103
- user: ptmind
- role: [controlplane,worker,etcd]
- - address: 172.20.101.104
- user: ptmind
- role: [controlplane,worker,etcd]
- - address: 172.20.101.105
- user: ptmind
- role: [controlplane,worker,etcd]
- - address: 172.20.101.106
- user: ptmind
- role: [worker]
- labels: {traefik: traefik-outer}
- 2、执行添加节点操作
- rke up --update-only
- 3、rke 删除节点
- 修改cluster.yal 将需要删除的节点配置删除,然后运行
- more cluster.yml
- nodes:
- - address: 172.20.101.103
- user: ptmind
- role: [controlplane,worker,etcd]
- - address: 172.20.101.104
- user: ptmind
- role: [controlplane,worker,etcd]
- - address: 172.20.101.105
- user: ptmind
- role: [controlplane,worker,etcd]
- 删除# - address: 172.20.101.106
- 删除# user: ptmind
- 删除# role: [worker]
- 删除# labels: {traefik: traefik-outer}
复制代码 4、执行删除节点操作
问题:当node节点处于NotReady状态下,对节点不可做操作,比如做了删除节点操作,会报错,删除不了节点。
解决办法:
1、手动删除节点上的组件。
2、通过命令移除节点的角色
- kubectl label node prod-129 node-role.kubernetes.io/controlplane-
复制代码 问题:k8s 集群的节点处于 SchedulingDisabled
解决方法:
- kubectl patch node NodeName -p "{"spec":{"unschedulable":false}}"
复制代码 或者:
- 设置不可调度
- kubectl cordon node07-ingress
- 取消节点不可调度
- kubectl uncordon node07-ingress
- 驱逐节点的pod
- kubectl drain --ignore-daemonsets --delete-local-data node07-ingress
- 删除节点
- kubectl delete node node07-ingress
复制代码 |
|