光线
创建 Pod/Service 报错:the provided range does not match the current range
修改kube-apiserver.yaml文件
信息
添加- --service-node-port-range=1-65535
bash
vim /etc/kubernetes/manifests/kube-apiserver.yaml重启kubelet
bash
systemctl daemon-reload
systemctl restart kubelet提示
如果你之前已经修改了,并且当时起了作用,下次用的时候发现失效了,那就先把那一行注释掉,重启kubelet,稍等一会然后把注释去掉再重启kubelet
Pod 无法连通集群外的服务
现象:可以ping通集群外的服务,telnet端口也是通的,但Pod就是无法访问。
信息
我这里外部服务以Mongo为例。操作系统为:Centos7.9
查看iptables规则,观察Chain INPUT和Chain OUTPUT
bash
iptables -L如果不是ACCEPT,那就执行以下命令,放通所有流量
bash
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT如果执行如上命令还是不行的话,那就要设置KUBE-FORWARD规则
bash
iptables -I KUBE-FORWARD -p tcp --sport 27017 -j ACCEPT
iptables -I KUBE-FORWARD -p tcp --dport 27017 -j ACCEPT笔记
添加完成后必须快速验证,因为KUBE-FORWARD很快就会重置,如果此方法还是不行的话,那本篇文章就帮不到你了
如果添加KUBE-FORWARD规则可行的话,那就可以试着配置Firewall来实现转发,因为配置KUBE-FORWARD的规则存在不了多久就会被Kube-Proxy重置,感兴趣的可以去Google一下:Kubernetes Iptables
安装Firewall
bash
yum install firewalld -y配置Firewalld规则
TCP: firewall-cmd --permanent --add-port=27017/tcp
UDP: firewall-cmd --permanent --add-port=27017/udp开启Firewall并设置开机自动启动
bash
systemctl start firewalld
systemctl enable firewalld以 master 身份加入集群报错:context deadline exceeded
完整报错:
text
failed to dial endpoint https://192.168.7.2:2379 with maintenance client: context deadline exceededmaster节点查询etcd相关Pod
bash
kubectl get pod -n kube-system进入etcd Pod
bash
kubectl exec -ti etcd-k8s-master01 -n kube-system sh查询Etcd信息
bash
export ETCDCTL_API=3
etcdctl --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" member list把出问题的节点删除
bash
etcdctl --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" member remove 17826e460c060952Nginx 反向代理获取到的客户端 IP 是内网 IP
Nginx反向代理获取客户端访问IP,在Kubernetes1.19.x中获取到的IP是内网IP,而不是客户端真实的IP。
首先如果确认配置没问题的话,可以通过Access Log来确认。如果Log的IP也是内网IP:确定域名绑定的公网IP,确定这个IP绑定到哪台服务器上了,把Nginx Pod调度到绑定公网IP的那台服务器上,然后在Nginx SVC文件中添加[externalTrafficPolicy: Local]配置 
Flannel 安装失败,Node 一直 NotReady
在搭建Kubernetes1.19.0时,安装配置Flannel失败,Node一直处于NotReady状态,检查Kubelet日志发现报错:
text
Unable to update cni config: no valid networks found in /etc/cni/net.d所有Node下载cni插件
bash
wget https://www.ikun.blog/downloads/kubernetes/cni-plugins-linux-amd64-v1.2.0.tgz解压到/opt/cni/bin目录下
bash
cd /opt/cni/bin
cp -r /opt/cni/bin /opt/cni/bin_BAK
rm -rf ./*
tar zxvf cni-plugins-linux-amd64-v1.2.0.tgz
rm -rf cni-plugins-linux-amd64-v1.2.0.tgz所有Node重启Kubelet
bash
systemctl daemon-reload
systemctl restart kubelet重新部署Flannel
bash
kubectl delete -f kube-flannel.yml
kubectl apply -f kube-flannel.yml