步骤

事先跳转到 清理环境(注意脚本中包括清理所有 Docker 容器)实验请不要直接上生产环境。也可查看官网步骤


CA

使用 CAShell 生成 CA 证书:https://github.com/yhyddr/CAShell

1wget https://github.com/yhyddr/CAShell.git


Exec

note to give permission by this command in shell file directory chmod +x create.sh


脚本参数

1--ssl-domain: 生成ssl证书需要的主域名,如不指定则默认为www.rancher.local,如果是ip访问服务,则可忽略;
2    --ssl-trusted-ip: 一般ssl证书只信任域名的访问请求,有时候需要使用ip去访问server,那么需要给ssl证书添加扩展IP,多个IP用逗号隔开;
3    --ssl-trusted-domain: 如果想多个域名访问,则添加扩展域名(TRUSTED_DOMAIN),多个TRUSTED_DOMAIN用逗号隔开;
4    --ssl-size: ssl加密位数,默认2048;
5    --ssl-date: ssl有效期,默认10年;
6    --ca-date: ca有效期,默认10年;
7    --ssl-cn: 国家代码(2个字母的代号),默认CN;


使用示例:

1./create_self-signed-cert.sh --ssl-domain=www.test.com --ssl-trusted-domain=www.test2.com --ssl-trusted-ip=1.1.1.1,2.2.2.2,3.3.3.3 --ssl-size=2048 --ssl-date=3650

Docker run Rancher

运行如下命令

1docker run -d --restart=unless-stopped \
2  -p 80:80 -p 443:443 \
3  -v /root/rancher:/var/lib/rancher/ \
4  -v /var/log/rancher/auditlog:/var/log/auditlog \
5  -e AUDIT_LEVEL=3 \
6  -v /root/CAShell/tls.crt:/etc/rancher/ssl/cert.pem \
7  -v /root/CAShell/tls.key:/etc/rancher/ssl/key.pem \
8  -v /root/CAShell/cacerts.pem:/etc/rancher/ssl/cacerts.pem \
9  rancher/rancher:latest


如果你只是想试试

1$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest


出错清理环境:

官网指南


运行如下命令即可

 1  # 停止服务
 2  systemctl  disable kubelet.service
 3  systemctl  disable kube-scheduler.service
 4  systemctl  disable kube-proxy.service
 5  systemctl  disable kube-controller-manager.service
 6  systemctl  disable kube-apiserver.service
 7
 8  systemctl  stop kubelet.service
 9  systemctl  stop kube-scheduler.service
10  systemctl  stop kube-proxy.service
11  systemctl  stop kube-controller-manager.service
12  systemctl  stop kube-apiserver.service
13
14  # 删除所有容器
15  docker rm -f $(docker ps -qa)
16
17  # 删除所有容器卷
18  docker volume rm $(docker volume ls -q)
19
20  # 卸载mount目录
21  for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done
22  
23  # 备份目录
24  mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M")
25  mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M")
26  mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M")
27  mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")
28
29  # 删除残留路径
30  rm -rf /etc/ceph \
31       /etc/cni \
32       /opt/cni \
33       /run/secrets/kubernetes.io \
34       /run/calico \
35       /run/flannel \
36       /var/lib/calico \
37       /var/lib/cni \
38       /var/lib/kubelet \
39       /var/log/containers \
40       /var/log/pods \
41       /var/run/calico
42
43  # 清理网络接口
44  network_interface=`ls /sys/class/net`
45  for net_inter in $network_interface;
46  do
47    if ! echo $net_inter | grep -qiE 'lo|docker0|eth*|ens*';then
48      ip link delete $net_inter
49    fi
50  done
51
52  # 清理残留进程
53  port_list='80 443 6443 2376 2379 2380 8472 9099 10250 10254'
54
55  for port in $port_list
56  do
57    pid=`netstat -atlnup|grep $port |awk '{print $7}'|awk -F '/' '{print $1}'|grep -v -|sort -rnk2|uniq`
58    if [[ -n $pid ]];then
59      kill -9 $pid
60    fi
61  done
62
63  pro_pid=`ps -ef |grep -v grep |grep kube|awk '{print $2}'`
64  
65  if [[ -n $pro_pid ]];then
66    kill -9 $pro_pid
67  fi
68
69  # 清理Iptables表
70  ## 注意:如果节点Iptables有特殊配置,以下命令请谨慎操作
71  sudo iptables --flush
72  sudo iptables --flush --table nat
73  sudo iptables --flush --table filter
74  sudo iptables --table nat --delete-chain
75  sudo iptables --table filter --delete-chain
76
77  systemctl restart docker


或者  Kubernetes集群之清除集群


⚠️:重启和重新部署解决一切问题