如何配置Kubernetes Service,仅允许内部Pod访问并禁用外部访问?
如何配置Kubernetes Service仅允许集群内部Pod访问
你当前的Service配置存在两处会导致外部可访问的问题:nodePort字段指定了节点级别的公网端口,且若service.type为NodePort或LoadBalancer类型,也会对外暴露服务。要实现仅集群内部Pod可访问,按以下步骤修改:
修改要点
- 移除
nodePort字段:该字段是NodePort类型Service用来在集群节点上开放公网端口的配置,删除后将不再对外暴露这个端口。 - 确保Service类型为
ClusterIP:这是Kubernetes Service的默认类型,仅会在集群内部分配可访问的IP,不会对外公开。你可以直接在配置中硬编码类型,或者确保.Values.service.type的值设置为ClusterIP。 - 修正配置笔误:原配置中
spec:a是拼写错误,需要改为spec:,否则会导致配置解析失败。
修改后的完整Service配置
apiVersion: v1 kind: Service metadata: name: {{ include "router.fullname" . }} labels: {{- include "router.labels" . | nindent 4 }} spec: type: {{ .Values.service.type | default "ClusterIP" }} ports: - name: http protocol: TCP port: 80 # 集群内部Service暴露的端口 targetPort: 8180 # 后端Pod的监听端口 selector: {{- include "router.selectorLabels" . | nindent 4 }}
说明
- 如果你的
values.yaml中service.type已经设置为ClusterIP,直接使用type: {{ .Values.service.type }}即可;如果不确定默认值,加上| default "ClusterIP"可以确保配置默认使用集群内部访问类型。 ClusterIP类型的Service只能被集群内的Pod通过Service名称或集群IP访问,外部流量无法直接到达,完全符合你仅允许内部Pod访问的需求。
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

