如何在Google云中暂停然后恢复Kubernetes服务?

时间:2020-06-01 18:30:52

标签: kubernetes service google-kubernetes-engine kubectl

我有一个正在运行的名为Foo的服务。它将收到的流量也定向到正在运行的Pod。由于该服务的类型为LoadBalancer并在Google Cloud中运行-它具有自己的外部IP。

我目前正在对各种服务进行维护和测试,并且想暂时停止服务Foo的工作,然后再次恢复它。也就是说,为服务Foo的IP命中任何人都将获得404,但是后来我恢复它-他们将开始获得答案。

之所以我不仅仅删除服务然后创建一个新服务,是因为我希望保留Foo服务的原始IP地址。我有直接引用该IP的测试,并且不希望不断更改它们。我在生产中也有一些客户依赖该IP,因此我不会冒失去它的风险。

那么,关于如何在保留其IP的同时暂时停止/恢复Google云中的kubernetes服务的任何指示?

谢谢

1 个答案:

答案 0 :(得分:1)

Kubernetes本身没有停止服务的机制。


Service中创建GKE类型的LoadBalancer时,它将自动创建用于外部访问的转发规则。您可以禁用该规则(不要删除!),以阻止<​​strong>外部流量访问您的Service.

要禁用转发规则:

  • 通过以下任一方法用LoadBalancer检查关联的IP地址:
    • 发出:$ kubectl get svc
    • 转到:GCP Dashboard -> Kubernetes Engine -> Services & Ingress
  • 转到GCP Dashboard -> VPC Network -> External IP addresses
  • 找到您的LB的IP和与其关联的转发规则的副本名称
  • 转到GCP Dashboard -> VPC Network -> Firewall
  • 搜索提到的转发规则
  • 编辑
  • 在编辑站​​点的底部,您应该有一个禁用它的选项,如下图所示:

GCP1


GKE的角度来看,您可以创建具有静态IP地址的服务类型LoadBalancer,只要该项目未发布,该地址便会绑定并可供您的项目使用。即使您删除了Service集群中的GKE,它也仍然可以绑定到重新创建的Service

您可以通过以下任一方法来实现:

在创建Service之前保留静态IP地址

  • 转到GCP Dashboard -> VPC Network -> External IP addresses -> Reserve Static Address
  • 创建静态IP
  • 记下创建的IP地址
  • 使用先前创建的IP地址创建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
  • 删除ServiceGCP Dashboard中IP地址之间的关联
  • 它不会删除保留的静态IP地址

在保留静态IP地址之前创建Service

假设您已经创建了Service类型的LoadBalancer,则可以:

  • 转到GCP Dashboard -> VPC Network -> External IP addresses
  • 找到与您的LoadBalancer关联的IP地址
  • 将此IP地址的类型从Ephemeral更改为Static。这样可以确保删除服务后不会释放该IP。
  • 您需要在重新创建包含以下内容的服务定义时对其进行编辑
  loadBalancerIP: PASTE_HERE_IP_ADDRESS

如果您将IP地址类型从Ephemeral更改为Static,则删除Service不会释放您的Static IP地址。


请查看其他文档:

如果您有任何疑问,请告诉我。