我有一个Kubernetes集群安装,在centos 7机器(内部环境)中有一个主节点和两个工作节点。是否可以通过主节点的ip访问将在Kubernetes上安装的所有已部署服务(内置和我的微服务)?
我用过法兰绒网络。我的服务正在节点端口30011上运行。我可以从工作节点ip和节点端口[192.23.12.X1:30011和192.23.12.X2:30011]端口访问我的服务,但无法访问同一端口主节点提供服务[192.23.19.21:30011]。
这是我的部署和服务Yaml文件
deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: am-profile
labels:
app: am-profile
spec:
replicas: 1
selector:
matchLabels:
app: am-profile
template:
metadata:
labels:
app: am-profile
spec:
containers:
- name: am-profile
image: 192.23.12.160:8083/am-setting:1.0.0
ports:
- containerPort: 8081
service.yaml
apiVersion: v1
kind: Service
metadata:
name: am-profile
labels:
app: am-profile
spec:
type: NodePort
ports:
- targetPort: 8081
port: 8081
nodePort: 30011
selector:
app: am-profile
我想像http://master-node:30011/hello一样访问此服务。 感谢您的帮助。
这是IP表保存了
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/subscriber-profile-service:" -m tcp --dport 30002 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/subscriber-profile-service:" -m tcp --dport 30002 -j KUBE-SVC-IUSISESM6NEI4T53
-A KUBE-SERVICES ! -s 10.244.0.0/16 -d 10.107.113.5/32 -p tcp -m comment --comment "default/subscriber-profile-service: cluster IP" -m tcp --dport 8082 -j KUBE-MARK-MASQ
-A KUBE-SERVICES -d 10.107.113.5/32 -p tcp -m comment --comment "default/subscriber-profile-service: cluster IP" -m tcp --dport 8082 -j KUBE-SVC-IUSISESM6NEI4T53 [r –
答案 0 :(得分:1)
如果Kubernetes群集没有网络问题,则可以使用群集的任何节点(包括主节点)访问NodePort
服务。
默认情况下,kube-proxy
个Pod创建ip-tables
规则以将流量从NodeIP:NodePort
转发到特定的pod:port
。您可以通过在每个节点上运行以下命令来检查现有的ip-tables
规则:
$ sudo iptables-save
# you may need to install iptables package to use this command
# yum -y install iptables
-A KUBE-NODEPORT ... -j KUBE-SVC-... # shows you port number on the node
-A KUBE-SVC-... -j KUBE-SEP-... # shows you destination rules links and balancing
-A KUBE-SEP-... ... -j DNAT --to-destination <pod-ip:port> # shows you destination for traffic that comes to NodePort
如果所有提到的规则都到位,请检查从主节点到节点的连通性:
master-node$> curl http://<pod-ip>:<port>/path-if-needed/
如果检查失败并出现连接错误,请检查以下内容: