文章目录
kubectl apply run create区别
官方解释
kubectl
提供了多种命令来管理集群中的资源,其中apply
、run
和create
是最常用的几个。下面是这些命令之间的主要区别:
1. kubectl apply
kubectl apply
命令用于通过文件或标准输入来应用配置。它采用声明式的方式来管理资源。apply
命令会检查集群中资源的当前状态,并尝试将其与提供的配置相匹配。如果资源不存在,apply
会创建它;如果资源已经存在但配置不同,apply
会更新它。
使用apply
的一个关键优势是,它可以保留对资源的任何未通过配置文件进行的更改(即,资源的"最后一次应用"状态)。这使得在迭代和测试时更加灵活,因为你可以在应用新配置的同时保留之前的更改。
示例:
bash
kubectl apply -f pod.yaml
可以使用命令删除kubectl delete -n default deployment nginx-deployment
将nginx版本image: nginx:1.7.9
修改为image: nginx:1.23
bash
$ k apply -f k8s_nginx.yaml
deployment.apps/nginx-deployment created
$ k create -f k8s_nginx.yaml
Error from server (AlreadyExists):
error when creating "k8s_nginx.yaml": deployments.apps "nginx-deployment" already exists
k为别名,alias k="minikube kubectl --"
2. kubectl run
kubectl run
命令用于快速启动 一个容器化的应用程序。它简化了创建Deployment、Service(如果需要的话)和其他相关资源的步骤。run
命令特别适合在快速测试或临时部署时使用。
但是,run
命令并不适用于生产环境,因为它提供的功能相对较少,且不易于进行复杂的配置和自定义。
示例:
bash
kubectl run nginx --image=nginx:1.19.1
3. kubectl create
kubectl create
命令用于从文件、目录或标准输入中创建资源。与apply
类似,create
也采用声明式的方式来管理资源。但是,与apply
不同的是,create
不会尝试更新已存在的资源;如果资源已经存在,create
会返回一个错误。
create
命令通常用于创建那些不经常更改的资源,如Namespace、ConfigMap等。
示例:
bash
kubectl create -f namespace.yaml
总结
kubectl apply
:用于通过文件或标准输入来应用配置,支持更新已存在的资源。kubectl run
:用于快速启动容器化的应用程序,特别适合快速测试或临时部署。kubectl create
:用于从文件、目录或标准输入中创建资源,但不会更新已存在的资源。
附yaml文件
pod.yaml
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
kubernetes: kubectl create与kubectl apply的区别
kubectl create 与 kubectl apply 的区别
Kubectl Apply vs. Kubectl Create -- What's the Difference?