在kubernetes中使用externalIP作为带有网络负载均衡器的本地服务
我公司的内部部署中有3个节点k8集群,运行端口58047上公开的TCP侦听器 我们有一个网络负载均衡器,它可以在这个节点上运行 我可以将端口公开给每个节点中的主机,这样NLB将负责,或者我应该创建一个服务,公开NLB中指定的单个外部ip 哪种方法最好在kubernetes中使用externalIP作为带有网络负载均衡器的本地服务,kubernetes,Kubernetes,我公司的内部部署中有3个节点k8集群,运行端口58047上公开的TCP侦听器 我们有一个网络负载均衡器,它可以在这个节点上运行 我可以将端口公开给每个节点中的主机,这样NLB将负责,或者我应该创建一个服务,公开NLB中指定的单个外部ip 哪种方法最好 NAME READY STATUS RESTARTS AGE pod/iothubdeployment-57bbb5f4d6-m62df 1/1 Run
NAME READY STATUS RESTARTS AGE
pod/iothubdeployment-57bbb5f4d6-m62df 1/1 Running 1 50m
pod/iothubdeployment-57bbb5f4d6-r9mzr 1/1 Running 1 50m
pod/iothubdeployment-57bbb5f4d6-w5dq4 1/1 Running 0 50m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5d18h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/iothubdeployment 3/3 3 3 56m
NAME DESIRED CURRENT READY AGE
replicaset.apps/iothubdeployment-57bbb5f4d6 3 3 3 50m
replicaset.apps/iothubdeployment-6b78b96dc5 0 0 0 56m
看起来您正在直接尝试通过主机端口公开部署。不建议这样做:您应该创建一个服务,指导Kubernetes如何将部署公开给集群内外的其他工作负载 NodePort服务允许您正确地公开每个节点上的部署:然后可以将负载平衡器配置为连接到任何节点IP上的该端口
apiVersion: apps/v1
kind: Deployment
metadata:
name: iothubdeployment
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 67%
minReadySeconds: 5
selector:
matchLabels:
app: iothub
template:
metadata:
labels:
app: iothub
version: 1.1.0
spec:
containers:
- name: iothubpod
image: gitlab.dt.local:5555/cere-brum/iot_gateway/iot_hub/iot_hub:latest
imagePullPolicy: Always
ports:
- containerPort: 58047
hostPort: 58000
protocol: TCP
imagePullSecrets:
- name: regcred