0

我们的一些 Pod 通过“kubernetes”服务访问 Kubernetes API。我们正在应用允许访问 K8S API 的网络策略,但我们发现完成此操作的唯一方法是查询“kubernetes”服务的 ClusterIP,并将其作为 ipBlock 包含在出口规则中在网络策略中。

具体来说,这个值:

kubectl get services kubernetes --namespace default -o jsonpath='{.spec.clusterIP}'

“kubernetes”服务 ClusterIP 是否有可能更改为不同于在集群创建期间初始化的值?如果是这样,我们的配置可能会中断。我们希望这是不可能的,但我们正在寻找官方支持文档。

4

2 回答 2

2

最简洁的答案是不。

更多细节 :

  • 您无法更改/编辑 clusterIP,因为它是不可变的……因此kubectl edit不适用于该字段。

  • 服务集群 IP 可以通过 轻松更改kubectl delete -f svc.yaml,然后kubectl apply -f svc.yaml再次更改。

  • 因此,永远不要依赖服务 IP,因为服务被设计为由 DNS 引用:

    • service-name如果通信器在同一个命名空间内,则使用
    • service-name.service-namespace如果通信器在同一命名空间内部或外部,则使用。
    • 用于service-name.service-namespace.svc.cluster.localFQDN。
于 2020-07-09T22:16:26.327 回答
0

是的,这是可能的

如果在你的服务 yaml 文件(Service.spec.clusterIP)中指定 clusterIP,你的服务的 ip 地址不会是随机的,并且总是相同的。服务 yaml 应该是这样的:

apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: default
spec:
  clusterIP: 10.96.0.100
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  type: ClusterIP

请注意,您选择的 ip 应该在集群中未分配。

于 2020-09-24T09:13:02.407 回答