求大佬解答
All in one部署
Rancher 2.5.8
Centos7
k8s: v1.20.11-rancher1-1
单节点部署rancher和k8s,当rancher部署成功后,在rancher页面创建k8s,勾选etcd和control plane,在当前服务器上执行生成的脚本,k8s集群构建失败
脚本如下:
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.8 --server https://10.214.21.114:8443 --token pvtvg4b9x8w95v92zhjnw2jfmpfwncz7cv4plthw9fnvhbtjsrvf44 --ca-checksum a73b909e494f0e250ce7ce73132eb06494404ff6bf15013aafe7a799d8172b70 --etcd --controlplane --worker
rancher上面的状态信息:
docker中运行的镜像:
etcd和rancher agent日志:
将此脚本运行在不同的节点上,k8s能正常部署
ksd
3
这是因为有问题的这个节点之前添加过节点,当你卸载节点时,主机上有残留数据导致的,你可以重新使用以下脚本清理节点,然后重新添加集群。
#!/bin/bash
KUBE_SVC='
kubelet
kube-scheduler
kube-proxy
kube-controller-manager
kube-apiserver
'
for kube_svc in ${KUBE_SVC};
do
# 停止服务
if [[ `systemctl is-active ${kube_svc}` == 'active' ]]; then
systemctl stop ${kube_svc}
fi
# 禁止服务开机启动
if [[ `systemctl is-enabled ${kube_svc}` == 'enabled' ]]; then
systemctl disable ${kube_svc}
fi
done
# 停止所有容器
docker stop $(docker ps -aq)
# 删除所有容器
docker rm -f $(docker ps -qa)
# 删除所有容器卷
docker volume rm $(docker volume ls -q)
# 卸载mount目录
for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher;
do
umount $mount;
done
# 备份目录
mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M")
mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")
# 删除残留路径
rm -rf /etc/ceph \
/etc/cni \
/opt/cni \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/cni \
/var/lib/kubelet \
/var/log/containers \
/var/log/kube-audit \
/var/log/pods \
/var/run/calico \
/usr/libexec/kubernetes
# 清理网络接口
no_del_net_inter='
lo
docker0
eth
ens
bond
'
network_interface=`ls /sys/class/net`
for net_inter in $network_interface;
do
if ! echo "${no_del_net_inter}" | grep -qE ${net_inter:0:3}; then
ip link delete $net_inter
fi
done
# 清理残留进程
port_list='
80
443
6443
2376
2379
2380
8472
9099
10250
10254
'
for port in $port_list;
do
pid=`netstat -atlnup | grep $port | awk '{print $7}' | awk -F '/' '{print $1}' | grep -v - | sort -rnk2 | uniq`
if [[ -n $pid ]]; then
kill -9 $pid
fi
done
kube_pid=`ps -ef | grep -v grep | grep kube | awk '{print $2}'`
if [[ -n $kube_pid ]]; then
kill -9 $kube_pid
fi
# 清理Iptables表
## 注意:如果节点Iptables有特殊配置,以下命令请谨慎操作
sudo iptables --flush
sudo iptables --flush --table nat
sudo iptables --flush --table filter
sudo iptables --table nat --delete-chain
sudo iptables --table filter --delete-chain
systemctl restart docker
大佬,你发的这些命令执行了,还是一样。我又重新安装了操作系统,没有安装过任何k8s相关内内容,只执行了以下命令安装docker和rancher,还是一样。
yum update -y
yum remove docker docker-common docker-selinux docker-engine docker-ce-cli
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io -y -y
systemctl enable docker
systemctl start docker
mkdir -p /opt/data/rancher_data
docker run -d --privileged -p 8080:80 -p 8443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=unless-stopped --name rancher-2-5-8 rancher/rancher:v2.5.8
有没有单节点部署rancher,然后在rancher上部署k8s的相关文档呢?
ksd
6
你这里是安装的 rancher ,我刚才发的脚本是清理节点的脚本
大佬,我执行清理脚本了,然后部署rancher之后,rancher是可以正常部署的,然后在rancher页面上生成部署k8s的脚本,最后在同一台服务器上执行该脚本,部署k8s失败
官方文档上面只说了这一段,我也是按照这个方式部署的,但是在一台机器上再执行rancher生成的脚本,k8s始终不成功,我的centos7是刚装的系统
【docker run -d --privileged -p 8080:80 -p 8443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=unless-stopped --name rancher-2-5-8 rancher/rancher:v2.5.8】
【 sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.8 --server https://10.214.21.114:8443 --token pvtvg4b9x8w95v92zhjnw2jfmpfwncz7cv4plthw9fnvhbtjsrvf44 --ca-checksum a73b909e494f0e250ce7ce73132eb06494404ff6bf15013aafe7a799d8172b70 --etcd --controlplane --worker】
我的操作步骤:
1.安装rancher
【docker run -d --privileged -p 8080:80 -p 8443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=unless-stopped --name rancher-2-5-8 rancher/rancher:v2.5.8】
2.生成脚本k8s安装脚本
3.安装k8s
【 sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.8 --server https://10.214.21.114:8443 --token pvtvg4b9x8w95v92zhjnw2jfmpfwncz7cv4plthw9fnvhbtjsrvf44 --ca-checksum a73b909e494f0e250ce7ce73132eb06494404ff6bf15013aafe7a799d8172b70 --etcd --controlplane --worker】
结果:部署k8s失败
需要说明一下,我的k8s和rancher部署在同一台服务器上面
ksd
17
我不知道了,我之前遇到过的 etcd 报错,就是因为之前清理的不彻底导致的,执行那个清理脚本重新安装都可以,但你这个,我不知道原因,搞不定
ksd
18
整不明白,你说你清理了重新安装的,然后连日志的截图都是用的之前的,日期还是 前两天的,懒得帮你排查
你可以在一台机器上测试一下,看是不是会有一样的问题?
大佬,我真的重新安装操作系统很多次了,每次都是一样的问题,我怀疑你说的下游冲突是有可能的
ksd
21
不可能冲突,下游集群又没用 8080 和 8443,冲突个啥
大佬,我现在是换了一个centos8系统,原始的centos7卸载了,rancher还在安装,所以截图使用的是原来的,但我昨天真的重新安装操作系统,重新安装rancher了。
您可以在一台机器上测试一下,看是不是会有一样的问题?