如何暂停 kubernetes 服务

How to pause a kubernetes service

我有一个下面描述的设置 - 所以一个简单的复制控制器、服务和一个在 google 云上使用 kubernetes 部署的 https 入口。

我需要停止我的应用程序一段时间,以便我可以测试我的堆栈的其余部分如何反应 - 这样做的好方法是什么?

我试过删除该服务,但是当我重新创建它时,它不会获取后端服务(创建了复制控制器和 Pod,我可以在内部访问它们,但不能通过入口访问 -服务没有看到它。

echo "
apiVersion: v1
kind: Service
metadata:
  name: nodeapp-https
  labels:
    app: nodeapp-https
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: nodeapp-https
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: nodeapp-https
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nodeapp-https
    spec:
      containers:
      - name: nodeapp-https
        image: gcr.io/my-project/node-app:v84
        ports:
        - containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nodeapp-httpss
spec:
  tls:
  - secretName: node-app-secret
  backend:
    serviceName: nodeapp-https
    servicePort: 80
" | kubectl create -f -

您可以在测试期间将副本数设置为 0。完成测试后,您可以将副本计数重置为所需的数量以恢复您的应用程序。

执行此操作的命令是

$ kubectl scale rc nodeapp-https --replicas=0
... do your test
$ kubectl scale rc nodeapp-https --replicas=1

如果您正在使用 Deployment(k8s 中的新概念),您可以使用以下命令缩小副本(pods 的数量),

kubectl scale deployment/<<my-service-name>> --replicas=0 --namespace <<my_namespace>>
deployment.apps/my-service-name scaled

您可以通过描述 deployment

来验证 副本 更改
kubectl describe deployment my-service-name --namespace my-namespace
Name:                   my-service-name
Namespace:              my-namespace
CreationTimestamp:      Tue, 03 Mar 2020 17:19:41 -0800
Labels:                 app=<<my-service-name>>
Annotations:            deployment.kubernetes.io/revision=91
                        kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"my-service-name"},"name":"my-service-name","namespace":"my_namespace"},"sp...
Selector:               app=my-service-name
Replicas:               0 desired | 0 updated | 0 total | 0 available | 0 unavailable


...

要获取副本运行,您可以使用与缩小时相同的命令进行放大,

kubectl scale deployment/<<my-service-name>> --replicas=1 --namespace <<my-namespace-name>>

对于这个问题,my-service-namenodeapp-https 但它使用 ReplicationController(在 k8s 中不再推荐)而不是 Deployment。

阅读: