善于使用日志,进行排错
journalctl -f
The connection to the server ***********was refused - did you specify the right host or port?
解决方案:
1.查看docker状态。若关闭,启动
systemctl status docker
systemctl start docker
#若启动失败,可能的原因是:安装kubernets之前安装过的docker残留文件影响了kubernets安装的docker启动
#解决方法:
#将/etc/docker/daemon.json删除,重新启动即可。
systemctl start kubelet
#查看启动效果
kubectl get nodes
#正常来说,这里就成功了,若还没成功,有可能是swap,没有永久关闭
3.永久关闭交换空间
swapoff -a
vi /etc/fstab
#注释掉带有swap那一行,通常来说是最后一行。
这里的error,普通的参照它自带的解析修改就好
比如什么cpu个数,swap未关闭,bridge-nf-call-iptables 这个参数,需要设置为 1:改好重新执行就ok。我就不多费唇舌。
这里详细说下image not found,或者无法pull
解决方案:
1.修改Kubeadm.conf的内容,严格遵守yaml格式,下面可能出现格式混乱,自己参照修改。
vi kubeadm.conf
# 修改 imageRepository: k8s.gcr.io
# 改为 registry.cn-hangzhou.aliyuncs.com/google_containers,这里这个地址,网上有aliyun但不是官方仓库,是私人仓库的不要用,坑得狠
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
# 修改kubernetes版本kubernetesVersion: v1.13.0
# 改为kubernetesVersion: v1.15.0
kubernetesVersion: v1.15.0
修改 kubeadm.conf 中的API服务器地址,后面会频繁使用这个
地址。serverapi的地址
localAPIEndpoint:
localAPIEndpoint:
advertiseAddress: 192.168.0.100
bindPort: 6443
注意: 192.168.0.100 是master主机的ip地址
配置子网网络
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
这里的 10.244.0.0/16 和 10.96.0.0/12 分别是k8s内部pods和services的子网网络,最好使用这个地址,后续flannel网络需要用到。
2.重新执行初始化
sudo kubeadm init --config ./kubeadm.conf
#顺带一嘴,执行完这个token,最好复制拿出保存。
使用flannel,最后执行kubectl get pods --all-namespaces -o wide,缺发现下载镜像不成功,有可能是镜像源的问题。
解决方案:手动下载镜像
1.到国内加速源七牛下载后,重新打标签
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
#把这镜像标签改回quay.io
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
解决方案:更改对应values中的镜像源路径
1.查看是哪个镜像无法下载
kubectl get pods -o wide -n <namespace>
journalctl -f
2.查看镜像所在位置,引号里面的内容,根据实际情况变化
find .|grep values.yaml|xargs grep "image:"
正常来说就是
针对更改 quay.io为quay-mirror.qiniu.com
k8s.gcr.io改为registry.cn-hangzhou.aliyuncs.com/google_containers
3.更新yaml文件,你刚才改的文件
#路径通常是退到prometheus-operator外层,进行更新
helm upgrade imooc-prom ./prometheus-operator/ -f ./prometheus-operator/charts/grafana/values.yaml
补充:k8s中,部署prometheus,operator因为镜像问题倒腾了两天,只能说这个上网环境太艰辛。别换azk8s了,已经凉了。
中途一直报imagepullbackoff,一直在创建,等等问题,都是因为镜像源的问题,能FQ的还好。
下面归纳下解决流程:
#查看状态 对应自己的namespace
kubectl get pods -o wide -n monitoring
kubectl describe pod -n monitoring
#看日志是哪个镜像下载不了,这里发现是exporter
journalctl -f
#找到所有国外镜像源
find .|grep values.yaml|xargs grep "quay.io"
find .|grep values.yaml|xargs grep "k8s.gcr.io"
#利用替换把所有quay.io全换为七牛的,k8s.gcr.io换为registry.aliyuncs.com/google_containers
sed -i 's/quay.io/quay-mirror.qiniu.com/g' <对应位置的具体文件>
#更新你的下载源,helm就是promeheus的yum
helm upgrade imooc-prom ./prometheus-operator/ -f ./prometheus-operator/charts/grafana/values.yaml
更新之后还是有下载不下来的
#去七牛上找具体的源https://hub.qiniu.com/home
#然后针对性的修改
我这里遇到node-exporter下载不了,最后单独改的源
docker pull reg.qiniu.com/zun/node-exporter:v0.17.0
#然后就是换成阿里云的部分,因为阿里云很久没更新了可能遇到版本不匹配也下载不了
#就针对性地,将阿里云换成googlecontainersmirror
我这里遇到hyperkube,阿里云无法下载最后镜像源换成了googlecontainersmirror
总的替换规则:
上图来源于https://www.cnblogs.com/ants/archive/2020/04/09/12663724.html
感谢博主。
https://www.cnblogs.com/ants/archive/2020/04/09/12663724.html
https://blog.csdn.net/qq_40806970/article/details/97645628
https://www.cnblogs.com/carriezhangyan/p/11084052.html