kubernetes——yaml
一、使用yaml文件创建资源
1、创建yaml文件
[root@master1 ~]# cd /opt/
[root@master1 opt]# vim nginx-deployment.yaml
apiVersion: apps/v1 #APIVersion:版本标签
kind: Deployment #控制器名称
metadata: #资源的元数据
name: nginx-deployment #定义资源的名称,在同一个namesapce必须是唯一
labels: #定义资源的标签
app: nginx
spec: #定义容器的属性
replicas: 3 #定义副本数量
selector: #选择器
matchLabels: #匹配标签
app: nginx #匹配模板名称
template: #模板
metadata:
labels:
app: nginx
spec:
containers: #定义容器
- name: nginx #容器名,要与前面模板要一致
image: nginx:1.15.4 #容器镜像以及版本
ports:
- containerPort: 80 #容器对外暴露的端口
2、使用yaml文件创建资源
[root@master1 opt]# kubectl create -f nginx-deployment.yaml
#查看状态
[root@master1 opt]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deployment-d55b94fd-qfrrv 1/1 Running 0 7m12s 172.17.68.3 192.168.200.13
nginx-deployment-d55b94fd-t2dxj 1/1 Running 0 7m12s 172.17.36.3 192.168.200.12
nginx-deployment-d55b94fd-zbc9c 1/1 Running 0 7m12s 172.17.36.2 192.168.200.12
3、发布服务
#需要将端口暴露给外网
#创建一个yaml文件
[root@master1 opt]# vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
app: nginx#启动服务
[root@master1 opt]# kubectl create -f nginx-service.yaml
#查看信息
[root@master1 opt]# kubectl get pods,svc -o wide
二、详解port
port:port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service
nodePort:nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service
targetPort:targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器
containerPort:containerPort是pod内部容器的端口,targetPort映射到containerPort
三、yaml帮助命令
1、测试命令
#用来检查语法是否有错
–dry-run
[root@master1 opt]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run
2、生成yaml格式
[root@master1 opt]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml
3、生成json格式
[root@master1 opt]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json
4、将现有资源生成模板并导出
[root@master1 opt]# kubectl get deployment.apps/nginx-deployment --export -o yaml > my-nginx.yaml