Kubernetes 与x27之间的差异;kubectl apply';和';kubectl创建';
我使用下面的yaml创建了一个pod,使用Kubernetes 与x27之间的差异;kubectl apply';和';kubectl创建';,kubernetes,declarative,imperative,Kubernetes,Declarative,Imperative,我使用下面的yaml创建了一个pod,使用kubectl create-f pod.xml和kubectl apply-f pod.xml创建了一个pod,我看不到任何区别,两个命令都创建了一个pod。中提到了命令式命令和声明式命令。但是,创建和应用的行为方式仍然相同 apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-c
kubectl create-f pod.xml
和kubectl apply-f pod.xml
创建了一个pod,我看不到任何区别,两个命令都创建了一个pod。中提到了命令式命令和声明式命令。但是,创建和应用的行为方式仍然相同
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
有什么区别?另外,kubectl如何应用
声明性和kubectl如何创建
命令性?它们都使用
对象详细信息。简单地说,
create
和apply
基本相同,如果您在单个文件上运行该操作以创建资源。但是,apply
允许您同时在一个目录下的多个文件上创建和修补
还有一种方法可以从目录中删除资源,但在撰写本文时它是alpha格式的:
kubectl apply -f <directory/> --prune -l your=label)
kubectl apply-f--prune-l=标签)
关于这个问题还有更多的见解:
kubectl create
和kubectl apply
命令之间存在细微的区别
kubectl create
命令创建一个新资源。因此,如果再次运行该命令,它将抛出一个错误,因为资源名称在命名空间中应该是唯一的
kubectl get pods
No resources found.
kubectl create -f pod.xml
pod/myapp-pod created
kubectl create -f pod.xml
Error from server (AlreadyExists): error when creating "pod.xml": pods "myapp-pod" already exists
2) kubectl apply
命令将配置应用于资源。如果资源不在那里,则将创建它。kubectl apply
命令可以第二次运行,因为它只应用如下所示的配置。在这种情况下,配置没有改变。所以,吊舱没有改变
kubectl delete pod/myapp-pod
pod "myapp-pod" deleted
kubectl apply -f pod.xml
pod/myapp-pod created
kubectl apply -f pod.xml
pod/myapp-pod unchanged
在kubectl create
中,我们指定了一个特定的操作,在本例中是create
,因此它是命令式的。在kubectl-apply
命令中,我们指定系统的目标状态,而不指定特定的操作,因此是声明性的。我们让系统决定采取什么行动。如果资源不在那里,它将创建它,如果资源在那里,它将把配置应用到现有资源
从执行角度来看,第一次创建资源时,kubectl create
和kubectl apply
之间没有区别,如上所示。但是,第二次kubectl create
将抛出错误
我花了一些时间来解决这个问题,但现在有了意义。这是两种不同的方法。我们称之为kubectl create。在这种方法中,您告诉Kubernetes API您想要创建、替换或删除什么,而不是告诉K8s集群世界的样子 kubectl apply是该方法的一部分,在该方法中,即使对对象应用了其他更改,也会保留您可能已应用于活动对象(即通过缩放)的更改
您可以在文档中阅读有关命令式和声明式管理的更多信息。重复查询的可能重复只是指向k8s文档,没有太多解释,因此此查询需要引起一些注意。OP要求更多解释,与文档中提到的不同