k8s笔记——kubectl apply run create区别

文章目录

kubectl apply run create区别

官方解释

kubectl提供了多种命令来管理集群中的资源,其中applyruncreate是最常用的几个。下面是这些命令之间的主要区别:

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?

相关推荐
遇见火星4 小时前
Docker Compose 完全入门:一键启动所有容器
运维·docker·容器·docker compose
云原生指北8 小时前
Apple Container Machine:把 Linux 搬进 Mac
macos·docker
蘋天纬地9 小时前
k8s的控制平面是什么,有什么作用
容器·kubernetes
无级程序员11 小时前
clklog地域分析中的地名中英文对照问题解决
kubernetes
隐层漫游者12 小时前
2026全网最细Docker容器化实战!从安装配置到Milvus向量数据库部署,一文掌握核心精髓(建议收藏)
docker
加加and减减14 小时前
Docker真实安装mysql8教程并优化配置
运维·mysql·docker·容器
半夜燃烧的香烟15 小时前
docker 安装minio nginx,配置nginx根据文根路由minio展示图片
java·nginx·docker
qiuziqiqi16 小时前
ocker-compose.yml 和Dockerfile 区别
运维·docker·容器
杰克逊的日记16 小时前
如何在不影响业务的情况下对K8S集群升级
云原生·容器·kubernetes
“码”力全开16 小时前
【架构深探】基于Docker与GB28181/RTSP的边缘计算AI视频管理平台:异构算力调度与源码交付实践
人工智能·docker·架构