首先在/opt目录下创建 mkdir k8s-yaml
cd k8s-yaml/
yaml文件
1.deployment的部署方式
首先 kubectl explain deployment 获取它的类型kind和标签version
vim nginx-deploy.yaml
apiVersion: apps/v1
#定义api版本的标签
kind: Deployment
#定义资源的类型(kind的类型:deployment job ingress service deamonset)或者角色
metadata:
#定义创建资源的元数据信息,包括资源的名称(pod的名称)、命名空间、pod的标签
name: nginx1
#定义资源的名称
# namesapces: xy102
# 定义命名空间
labels:
app: nginx1
#定义标签名就是app=nginx1 注意:上下文要一致
spec:
#spec是用来配置deployment资源需要的参数属性(副本数、匹配的标签以及容器的重启策略)
#这里顶格写就属于全部配置
replicas: 3
#定义该资源pod的数量
selector:
matchLabels:
#selector定义标签的选择器 matchLabels:定义匹配的标签。注意:这里需要上下文保持一致
app: nginx1
#以下都是来定义容器和pod的元数据
template:
#template定义业务模版,deployment定义了3个副本,所有pod的属性都会和template的设置保持一致
metadata:
labels:
app: nginx1
#这里也需要和上下文保持一致
spec:
#这里的spec定义pod内的容器
containers:
- name: nginx
image: nginx:1.22
#这里就是--image=nginx:1.22,这里就是使用的镜像
ports:
- containerPort: 80
#如果nginx的端口是默认的就是80,这里ports可以不写,写了也无法改变容器内的端口。
#如果默认端口不是80,那就需要加上ports声明非默认端口。
#这里的端口就是dockerfile定义的镜像的端口
注:pod里面有容器,但是是镜像定义容器,所以pod不能改变镜像
执行命令:kubectl apply -f nginx-deploy.yaml 如果有配置修改之后重新运行就好了
如果是基于yaml文件定义的资源对象
删除命令:kubectl delete -f nginx-deploy.yaml
2.service的部署方式
首先 kubectl explain service 获取它的类型kind和标签version
vim nginx-service.yaml
apiVersion: v1
#先定义api的标签
kind: Service
metadata:
#定义service的名称和标签
name: nginx1-svc
#service的名称
labels:
app1: nginx1
#service的标签
spec:
#定义service的资源参数(端口映射、service类型、匹配的标签名)
type: NodePort
ports:
- port: 80
#这里是定义service的端口
targetPort: 80
#这里是容器内的端口
nodePort: 30001
selector:
app: nginx1
#匹配标签名
执行命令:kubectl apply -f nginx-service.yaml
删除命令:kubectl delete -f nginx-service.yaml
此时就能对外访问了 访问master本机ip地址和30001即可
3.pod的部署方式
首先 kubectl explain pod 获取它的类型kind和标签version
vim nginx-pod.yaml
apiVersion: v1
#定义api版本的标签
kind: Pod
#定义资源的类型
metadata:
#定义创建资源的元数据信息
name: nginx-pod
labels:
app: nginx-pod
spec:
#声明容器的参数
containers:
- name: nginx
image: nginx:1.22
ports:
- containerPort: 80
#容器的端口
hostPort: 80
#主机端口,直接让主机端口和容器端口做映射(只能在yaml文件当中表示)
#如果这里做了hostport就不需要做service的端口映射
执行命令:kubectl apply -f nginx-pod.yaml
删除命令:kubectl delete -f nginx-pod.yaml
kubectl get pod -o wide 查看pod的部署在哪个节点上
因为hostport对应的是主机端口只是一个,所以对外访问的是这个node节点的本机ip地址
另外,用了hostport是不能轮询的
容器的重启策略和传参
重启的策略
restartPolicy 重启策略:作用就是来声明如果容器遇到问题,它的重启策略是什么
重启的策略有三种
1.Always
表示只要启动失败就会一直重启 指定是容器
以pod为例,重启策略应该写在容器里面
apiVersion: v1
kind: Pod
metadata:
name: centos-pod
labels:
app: centos-pod
spec:
containers:
- name: centos
image: centos:7
ports:
- containerPort: 80
hostPort: 80
restartPolicy: Always
2.Never
表示从不重启 docker的默认模式是never
3.OnFailure
表示只有容器异常退出时,才会重启 ,也就是返回码非0时才会对容器进行重启
pod内的传参
command和arges
在yaml文件当中command