我有一个正在运行的名为Foo的服务。它将收到的流量也定向到正在运行的Pod。由于该服务的类型为LoadBalancer并在Google Cloud中运行-它具有自己的外部IP。
我目前正在对各种服务进行维护和测试,并且想暂时停止服务Foo的工作,然后再次恢复它。也就是说,为服务Foo的IP命中任何人都将获得404,但是后来我恢复它-他们将开始获得答案。
之所以我不仅仅删除服务然后创建一个新服务,是因为我希望保留Foo服务的原始IP地址。我有直接引用该IP的测试,并且不希望不断更改它们。我在生产中也有一些客户依赖该IP,因此我不会冒失去它的风险。
那么,关于如何在保留其IP的同时暂时停止/恢复Google云中的kubernetes服务的任何指示?
谢谢
答案 0 :(得分:1)
Kubernetes本身没有停止服务的机制。
在Service
中创建GKE
类型的LoadBalancer时,它将自动创建用于外部访问的转发规则。您可以禁用该规则(不要删除!),以阻止<strong>外部流量访问您的Service.
要禁用转发规则:
$ kubectl get svc
GCP Dashboard -> Kubernetes Engine -> Services & Ingress
GCP Dashboard -> VPC Network -> External IP addresses
GCP Dashboard -> VPC Network -> Firewall
从GKE
的角度来看,您可以创建具有静态IP地址的服务类型LoadBalancer
,只要该项目未发布,该地址便会绑定并可供您的项目使用。即使您删除了Service
集群中的GKE
,它也仍然可以绑定到重新创建的Service
。
您可以通过以下任一方法来实现:
Service
之前保留静态IP地址GCP Dashboard -> VPC Network -> External IP addresses -> Reserve Static Address
Service
类型的LoadBalancer。下面的示例:apiVersion: v1
kind: Service
metadata:
name: hello-service-lb
spec:
selector:
app: hello
ports:
- name: hello-port
port: 80
targetPort: 50001
nodePort: 30051
type: LoadBalancer
loadBalancerIP: PASTE_HERE_IP_ADDRESS
请具体看一下部分:
loadBalancerIP: PASTE_HERE_IP_ADDRESS
因为此行必须先前已创建静态IP地址。
删除此服务将:
Service
中的GKE
Service
和GCP Dashboard
中IP地址之间的关联Service
假设您已经创建了Service
类型的LoadBalancer,则可以:
GCP Dashboard -> VPC Network -> External IP addresses
Ephemeral
更改为Static
。这样可以确保删除服务后不会释放该IP。 loadBalancerIP: PASTE_HERE_IP_ADDRESS
如果您将IP地址类型从Ephemeral
更改为Static
,则删除Service
不会释放您的Static
IP地址。
请查看其他文档:
如果您有任何疑问,请告诉我。