Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Kubernetes中使用apply而不是create进行部署?_Kubernetes - Fatal编程技术网

如何在Kubernetes中使用apply而不是create进行部署?

如何在Kubernetes中使用apply而不是create进行部署?,kubernetes,Kubernetes,我正在尝试使用kubectl apply以声明方式创建部署。下面的配置创建得很好 kubectl create -f postgres-deployment.yaml 但如果我去 kubectl apply -f postgres-deployment.yaml 我收到了一条可爱的错误消息: 错误:无法解码“postgres deployment.yaml”:没有种类 已为版本“apps/v1beta1”注册“部署” 我试图寻找一个解释来解释这意味着什么,但我无法理解 apiVersion:

我正在尝试使用
kubectl apply
以声明方式创建部署。下面的配置创建得很好

kubectl create -f postgres-deployment.yaml
但如果我去

kubectl apply -f postgres-deployment.yaml
我收到了一条可爱的错误消息:

错误:无法解码“postgres deployment.yaml”:没有种类 已为版本“apps/v1beta1”注册“部署”

我试图寻找一个解释来解释这意味着什么,但我无法理解

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: postgres-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: postgres:10.1
        ports:
        - containerPort: 5432

旧的Kubernetes版本支持
extensions/v1beta1
API组上的部署对象

对于Kubernetes 1.9.0之前的版本,您应该使用API组
apps/v1beta2


在上面,您应该使用API组
apps/v1

您可以从
kubectl apply--help
发布
kubectl version
的输出吗:
要使用“apply”,请始终首先使用“apply”或“create--save config”创建资源
。因此,也许可以尝试
kubectl-create--save config-f postgres-deployment.yaml
,然后使用
kubectl-apply-f postgres-deployment.yaml
。这是否回答了您的问题?但是为什么
kubectl创建了
工作而
kubectl应用了
没有?当使用错误的API版本时,我预计两者都会失败。我只是在这里假设,但由于
kubectl apply
是创建对象的声明性方式的一部分,因此它执行的操作最终会确保所创建对象的API组不会被弃用。另一方面,
kubectl create
是创建对象的必要方式的一部分,因此,在这种管理对象的方式中,如果api组存在,则只会创建对象,即使不推荐使用。我敢打赌,如果用“香蕉”替换
apps/v1beta1
,kubectl create将失败。客户端版本还是服务器版本?