k8s创建资源的两种方式
命令 vs 配置文件
Kubernetes 支持两种方式创建资源:
1. 用 kubectl 命令直接创建
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2
在命令行中通过参数指定资源的属性。
2. 通过配置文件和 kubectl apply
创建
要完成前面同样的工作,可执行命令:
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment configured
3.nginx.yml 的内容说明
apiVersion: extensions/v1beta1 #api的版本 kind: Deployment #资源的类型 metadata: #资源的元数据 name: nginx-deployment #资源的名称 spec: #资源的说明 replicas: 2 #副本2个,缺省为1 template: #pod模板 metadata: #pod元数据 labels: #标签 app: web_server #标签选择器 spec: containers: - name: nginx image: nginx:1.79
资源的属性写在配置文件中,文件格式为 YAML。
这种配置文件对格式的要求极为严格,缩进不能错,空格不能少打,vim编辑器的高亮提示会对我们写配置文件有帮助,如果语法错误会检测到。
4.这两种方式进行比较
基于命令的方式:
-
简单直观快捷,上手快。
-
适合临时测试或实验。
基于配置文件的方式:
-
配置文件描述了
What
,即应用最终要达到的状态。 -
配置文件提供了创建资源的模板,能够重复部署。
-
可以像管理代码一样管理部署。
-
适合正式的、跨环境的、规模化部署。
-
这种方式要求熟悉配置文件的语法,有一定难度。
kubectl apply
不但能够创建 Kubernetes 资源,也能对资源进行更新,非常方便。不过 Kubernets 还提供了几个类似的命令,例如 kubectl create
、kubectl replace
、kubectl edit
和 kubectl patch
。
为避免造成不必要的困扰,我们会尽量只使用 kubectl apply
,
此命令已经能够应对超过 90% 的场景,事半功倍。
5.资源的删除
配置文件创建的资源 也可以用之前的方式删除
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment created
指定配置删除
[root@k8s-master k8s]# kubectl delete -f nginx.yaml deployment.extensions "nginx-deployment" deleted