二进制k8s部署后的一些问题解决
问题一:虚拟机挂起之后重开,发现etcd集群其中一个节点起不来(k8s-1)
用这个命令在k8s-1启动,怎么样都起不来:supervisorctl start etcd-server-7-128
用一个正常起了etcd的服务器(k8s-2)运行命令:
ETCDCTL_API=3 /opt/apps/etcd/etcdctl --cacert=/opt/apps/etcd/certs/ca.pem --cert=/opt/apps/etcd/certs/etcd-peer.pem --key=/opt/apps/etcd/certs/etcd-peer-key.pem --endpoints="https://10.4.7.128:2379,https://10.4.7.129:2379,https://10.4.7.130:2379" endpoint health
说的128连接不了
查看128报错信息:
etcd起不来,apiserver都起不了了
W1201 13:41:22.278707 8011 clientconn.go:1251] grpc: addrConn.createTransport failed to connect to {10.4.7.130:2379 0 <nil>}. Err :connection error: desc = "transport: Error while dialing dial tcp 10.4.7.130:2379: connect: net
work is unreachable". Reconnecting...
问题解决:检查回环接口是否正常监听127.0.0.1
etcd启动文件有个监听127.0.0.1的配置: /opt/apps/etcd/etcd-server-startup.sh
查看该机器的回环网口,确实没有监听127.0.0.1
检查下 ifcfg-lo,ip地址有设置成127.0.0.1 。 重启网络就可以了:systemctl restart network
问题二: kubectl get nodes 返回 No resources found.
查看报错日志:/data/logs/kubernetes/kube-kubelet/kubelet.stdout.log
说这个k8s-node 用户没有权限
问题解决:想起部署文章有个这样的用户授权
重新运行下就好了:
kubectl create -f k8s-node.yaml
kubectl get clusterrolebinding k8s-node
至于为啥没有了这些信息。因为我后来把etcd节点从两个增加到三个了,其中增加第3个节点的时候报错,网上说要删除这个data-dir目录才能添加上,etcd是利用data-dir来进行数据的持久化保存的。之后要搞个etcd备份脚本才行,不然东西一多,数据坏了啥都没有
别人给的etcd持久化备份脚本(先留着)
1 cat bk_etcd.sh 2 #!/bin/bash 3 set -e 4 exec >> /opt/backup_week/backup_etcd.log 5 6 Date=`date +%Y-%m-%d-%H-%M` 7 EtcdEndpoints="localhost:2379" 8 EtcdCmd="/opt/etcd/etcdctl" 9 BackupDir="/opt/backup_week" 10 BackupFile="etcd.db.$Date" 11 12 echo "`date` backup etcd..." 13 14 export ETCDCTL_API=3 15 $EtcdCmd --endpoints $EtcdEndpoints snapshot save $BackupDir/$BackupFile 16 17 echo "`date` backup done!"