【问题标题】:Kubectl imperative command for deployment用于部署的 Kubectl 命令式命令
【发布时间】:2022-05-03 20:24:55
【问题描述】:

我曾经使用命令式命令快速创建部署

kubectl run nginx --image=nginx --restart=Always --port=80 --replicas=3

现在运行命令与部署似乎已被弃用。有没有其他方法可以对 kubectl create... 使用副本和端口做同样的事情?

【问题讨论】:

  • 运行命令有什么问题?
  • 它不再创建部署/作业。它已被弃用
  • 据我检查,github pull ,kubectl run 只会创建 Pod。所有生成器将被完全删除。如果您正在寻找替代方案,值得检查this stackoverflow 问题。如果这就是您要找的,请告诉我。
  • AFAIK,唯一的方法是kubectl patch
  • 对我来说 kubectl run name --image=docker_image 将创建一个部署(2020 年 5 月)。但是我也看到了一条弃用消息。

标签: kubernetes kubectl


【解决方案1】:

从 Kubernetes v1.18 开始,kubectl run 将不再创建部署,而是创建 pod。

可以改用kubectl create deployment 的命令式选项。 所以下面的命令:

k create deploy nginx --image nginx

将为您解决问题。 它将以命令式的方式创建部署对象。 (不需要中间的yaml 文件)

# Run:
kubectl create deploy nginx --image nginx && kubectl scale deploy nginx --replicas 3

# Check:
kubectl get deploy
NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
nginx                        3/3     3            3           14s

注意kubectl create deployemnt 没有--replicas 标志,因此缩放是单独控制的。

【讨论】:

    【解决方案2】:

    试试这个-

    kubectl create deploy nginx --image=nginx --dry-run -o yaml > webapp.yaml
    

    在 yaml 中将副本更改为 5 并创建它

    kubectl create -f webapp.yaml
    

    【讨论】:

      【解决方案3】:

      好的,生成器已被弃用,因为维护该代码很痛苦。为了通过 CLI 轻松部署生成器,最好推荐 helm3,它现在不需要tillier,而且使用起来非常简单:

      https://helm.sh/docs/intro/install/

      然后,安装后通过 CLI 运行 Nginx 部署:

      添加仓库

      helm repo add bitnami https://charts.bitnami.com/bitnami
      

      此外,您可以先通过添加--dry-run 来检查将要安装的内容

      helm install Nginx bitnami/nginx --dry-run
      

      如果您对将要部署的内容感到满意,请在不使用 --dry-run 的情况下运行。

      【讨论】:

        【解决方案4】:

        我正在使用 Kubernetes:v1.22.5 命令式的用法:

        kubectl create deploy mydep --image=nginx --replicas=3 --dry-run=client -o yaml
        
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          creationTimestamp: null
          labels:
            app: mydep
          name: mydep
        spec:
          replicas: 3
          selector:
            matchLabels:
              app: mydep
          strategy: {}
          template:
            metadata:
              creationTimestamp: null
              labels:
                app: mydep
            spec:
              containers:
              - image: nginx
                name: nginx
                resources: {}
        status: {}
        
        

        【讨论】:

          【解决方案5】:

          使用以下内容创建 nginx-deployment.yaml 文件。

          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: nginx
          spec:
            replicas: 3
            selector:
              matchLabels:
                app: nginx
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                containers:
                - image: nginx
                  name: nginx
                  ports:
                  - containerPort: 80
          

          然后运行kubectl create -f nginx-deployment.yaml

          【讨论】:

          • 这不能回答问题
          猜你喜欢
          • 1970-01-01
          • 2020-10-31
          • 2021-09-30
          • 2019-01-09
          • 1970-01-01
          • 2021-01-29
          • 2018-08-31
          • 2021-12-13
          • 1970-01-01
          相关资源
          最近更新 更多