【问题标题】:Create deployments with kubectl version 1.18 +使用 kubectl 版本 1.18 + 创建部署
【发布时间】:2021-04-19 02:49:52
【问题描述】:

Kubernetes: Up and Running, 2nd Edition的第67页,作者使用以下命令创建Deployment

kubectl run alpaca-prod \
--image=gcr.io/kuar-demo/kuard-amd64:blue \
--replicas=2 \
--labels="ver=1,app=alpaca,env=prod"

但是,kubectl 1.19+ 不推荐使用此命令,它现在创建一个 pod:

$ kubectl run alpaca-prod \     
--image=gcr.io/kuar-demo/kuard-amd64:blue \
--replicas=2 \
--labels="ver=1,app=alpaca,env=prod"
Flag --replicas has been deprecated, has no effect and will be removed in the future.
pod/alpaca-prod created

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:30:33Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-21T01:11:42Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

有没有办法使用kubectl run 来创建具有副本的部署和带有kubectl 1.19+ 的自定义标签?

【问题讨论】:

  • 我建议你使用 kubectl apply 和 yaml 资源。您可以在此处定义部署并稍后对其进行更新。因为这就是你最终在实际工作中做这件事的方式。
  • kubectl create deployment alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:blue --replicas=2 应该可以。但是你需要在创建后添加标签。
  • ...并将 YAML 文件检查到源代码管理中,这样您就可以记录部署的内容,并且可以稍后重新创建它(可能在不同的环境中)。

标签: kubernetes kubectl


【解决方案1】:

现在首选使用kubectl create 来创建新的Deployment,而不是kubectl run

这是与您的kubectl run 对应的命令

kubectl create deployment alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:blue --replicas=2

标签

默认情况下,您将从kubectl create deployment alpaca-proc 获得标签app=alpaca

获取其他标签,您需要稍后添加它们。使用kubectl labelDeployment 添加标签,例如

kubectl label deployment alpaca-prod ver=1

注意:这只会将标签添加到Deployment添加到 Pod 模板,例如Pod 不会获得标签。要将标签也添加到 pod,您需要编辑 Deployment-yaml 的 template: 部分。

【讨论】:

    【解决方案2】:

    注意:kubectl version 1.18 发生了变化。就像它不再可能使用kubectl 运行创建JobsCronJobsDeployments,只有Pods 仍然有效。

    所以是的,您不能从 1.18 的 kubectl run 创建部署。

    第 1 步:kubectl create 命令创建deployment

    kubectl create deploy alpaca-prod --image=gcr.io/kuar-demo/kuard-amd64:blue --replicas=2
    

    第 2 步使用kubectl label 命令更新标签

    kubectl label deploy -l app=alpaca-prod ver=1
    
    kubectl label deploy -l app=alpaca-prod app=alpaca
    
    kubectl label deploy -l app=alpaca-prod env=prod
    

    【讨论】:

      【解决方案3】:

      这是yaml 文件,它为“Kubernetes: Up and Running, 2nd Edition”的 p67 生成预期结果:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: alpaca-prod
      spec:
        selector:
          matchLabels:
            ver: "1"
            app: "alpaca"
            env: "prod"
        replicas: 2
        strategy:
          rollingUpdate:
            maxSurge: 25%
            maxUnavailable: 25%
          type: RollingUpdate
        template:
          metadata:
            labels:
              ver: "1"
              app: "alpaca"
              env: "prod"
          spec:
            containers:
            - name: kuard
              image: gcr.io/kuar-demo/kuard-amd64:blue
      

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 2021-10-08
        • 2015-01-07
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        相关资源
        最近更新 更多