我能否保证 "kubernetes" 服务在集群创建后将保持一致的 ClusterIP,即使我尝试修改或重新创建它也是如此?
Can I guarantee the "kubernetes" Service will retain a consistent ClusterIP following cluster creation even if I attempt to modify or recreate it?
我们的一些 Pods 通过“kubernetes”服务访问 Kubernetes API。我们正在应用允许访问 K8S API 的网络策略,但我们发现实现此目的的唯一方法是查询“kubernetes”服务的 ClusterIP,并将其包含为 ipBlock在网络策略的出口规则中。
具体来说,这个值:
kubectl get services kubernetes --namespace default -o jsonpath='{.spec.clusterIP}'
“kubernetes”服务 ClusterIP 是否可以更改为集群创建期间初始化的值以外的值?如果是这样,我们的配置可能会中断。我们希望这是不可能的,但我们正在寻找官方支持文档。
简短的回答是否定的。
更多详情:
您不能 change/edit clusterIP,因为它是不可变的...因此 kubectl edit
不适用于此字段。
可以通过kubectl delete -f svc.yaml
轻松更改服务集群IP,然后再次kubectl apply -f svc.yaml
。
因此,永远不要依赖服务 IP,因为服务设计为由 DNS 引用:
- 如果通信器在同一命名空间内,则使用
service-name
- 如果通信器在同一命名空间内部或外部,则使用
service-name.service-namespace
。
- 使用
service-name.service-namespace.svc.cluster.local
作为 FQDN。
是的,这是可能的
如果在您的服务 yaml 文件中指定 clusterIP(Service.spec.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 应该在您的集群中未分配。
我们的一些 Pods 通过“kubernetes”服务访问 Kubernetes API。我们正在应用允许访问 K8S API 的网络策略,但我们发现实现此目的的唯一方法是查询“kubernetes”服务的 ClusterIP,并将其包含为 ipBlock在网络策略的出口规则中。
具体来说,这个值:
kubectl get services kubernetes --namespace default -o jsonpath='{.spec.clusterIP}'
“kubernetes”服务 ClusterIP 是否可以更改为集群创建期间初始化的值以外的值?如果是这样,我们的配置可能会中断。我们希望这是不可能的,但我们正在寻找官方支持文档。
简短的回答是否定的。
更多详情:
您不能 change/edit clusterIP,因为它是不可变的...因此
kubectl edit
不适用于此字段。可以通过
kubectl delete -f svc.yaml
轻松更改服务集群IP,然后再次kubectl apply -f svc.yaml
。因此,永远不要依赖服务 IP,因为服务设计为由 DNS 引用:
- 如果通信器在同一命名空间内,则使用
service-name
- 如果通信器在同一命名空间内部或外部,则使用
service-name.service-namespace
。 - 使用
service-name.service-namespace.svc.cluster.local
作为 FQDN。
- 如果通信器在同一命名空间内,则使用
是的,这是可能的
如果在您的服务 yaml 文件中指定 clusterIP(Service.spec.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 应该在您的集群中未分配。