使用 kubectl 版本 1.18 + 创建部署

Create deployments with kubectl version 1.18 +

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 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 label 将标签添加到 Deployment,例如

kubectl label deployment alpaca-prod ver=1

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

注意: 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

这是 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