1.适合对资源的修改操作
2.声明式管理依赖于已有yaml文件,所有的内容都在yaml文件中声明
3.编辑好的yaml文件还是要依靠陈述式的命令发布到k8s集群当中
1.deployment的yaml文件 demonset statefulset
2.service的yaml文件
3.不基于控制器的yaml文件
k8s当中支持两种声明式的资源管理方式:
1.yaml格式,用于配置和管理资源对象
2.json格式,主要用于在api接口之间消息的传递
1.deployment的yamal文件
vim nginx1.yaml
apiVersion: apps/v1
#声明API版本的标签
kind: Deployment
#定义资源的类型 service/pod/deployment/Job.ingress/daemonset/statefulset
metadata:
name: nginx1
namespace: guoqi
labels:
wdf: nginx1
#定义资源的元数据信息,资源名称,资源对象部署的命名空间,标签等等信息
spec:
#定义deployment的资源需要的参数属性。
replicas: 3
#定义副本数
selector:
#定义标签选择器
matchLabels:
wdf: nginx1
#选择匹配的标签
template:
#定义业务的模版,如果定义了多个副本,所有的副本的属性都会按照模版的配置进行匹配
metadata:
labels:
wdf: nginx1
#定义了pod的副本都使用元数据标签和属性来进行匹配
spec:
containers:
- name: nginx
image: nginx:1.10
#posts:
#- containerPort:80
# spec:声明容器的相关参数,虽然我指定了容器的暴露端口是80,nginx默认的镜像就是80
# 即使指定了其他端口,也不会改变容器的端口。
2.service的文件
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: guoqi
labels:
wdf: nginx1
#元数据信息包括,service的名称,所属的命名空间,以及要匹配的deployment的标签,要和之前的保持一致
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
wdf: nginx1
#匹配所有的标签都是wdf:nginx1的pod的后端提供服务
3.创建一个pod
apiVersion: v1
#定义pod的api
kind: Pod
#定义资源类型
metadata:
name: centos1
namespace: guoqi
spec:
restartPolicy: Never
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Never Onfailure(只有异常退>出才会重启,状态非0,如果状态为0,不重启),restartPolicy指的是容器的重启策略,资源类型定义为deployment,这个容器策略只能是Always。
containers:
- name: centos
image: centos:7
#定义元数据信息,pod的全称,命名空间,标签
定义容器运行的命令参数,类似于docker的CMD和entrypoint
args可以理解docker中的cmd 给command传参