如何暂停kubernetes服务

时间:2017-01-09 10:45:42

标签: kubernetes kubectl kubernetes-health-check google-compute-engine

我有一个下面描述的设置 - 所以一个简单的复制控制器,服务和一个https ingress在谷歌云上部署kubernetes。

我需要暂停我的应用程序,以便我可以测试堆栈其余部分的反应 - 这是一个很好的方法吗?

我已经尝试删除该服务,但是当我重新创建它时,它不会获取后端服务(复制控制器和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 -

2 个答案:

答案 0 :(得分:15)

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

执行此操作的命令将是

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

答案 1 :(得分:1)

如果您使用的是Deployment(k8s中的新概念),则可以使用以下命令按比例缩小副本(窗格的数量)

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。

阅读: