6

我有一个如下所述的设置 - 所以一个简单的复制控制器、服务和一个在谷歌云上使用 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 -
4

2 回答 2

22

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

执行此操作的命令是

$ kubectl scale rc nodeapp-https --replicas=0
... do your test
$ kubectl scale rc nodeapp-https --replicas=1
于 2017-01-09T16:20:08.423 回答
3

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

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 中不再推荐)不是部署。

读:

于 2020-11-08T20:39:17.080 回答