大连网站建设案例,网页设计作品欣赏分析,建网站优势,网站模板文章资讯YAML 一、YAML 的概述1. Kubernetes 支持资源管理格式2. YAML 语法格式 二、YAML 文件1. 如何获取 api 资源相关信息2. 编写资源配置文件2.1 手动编写 yaml 文件详解K8S中的port 2.2 使用镜像生成 yaml 文件2.3 根据现有资源导出 yaml 文件 总结1. 如何获取资源清单文件#x… YAML 一、YAML 的概述1. Kubernetes 支持资源管理格式2. YAML 语法格式 二、YAML 文件1. 如何获取 api 资源相关信息2. 编写资源配置文件2.1 手动编写 yaml 文件详解K8S中的port 2.2 使用镜像生成 yaml 文件2.3 根据现有资源导出 yaml 文件 总结1. 如何获取资源清单文件yaml配置文件2. 如何设置流量发送给本机或者其他节点的Pod 一、YAML 的概述
1. Kubernetes 支持资源管理格式
Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式主要用于 api 接口之间消息的传递 YAML 格式用于配置和管理YAML 是一种简洁的非标记性语言内容格式人性化较易读
2. YAML 语法格式 大小写敏感 使用缩进表示层级关系 不支持Tab键制表符缩进只使用空格缩进 缩进的空格数目不重要只要相同层级的元素左侧对齐即可通常开头缩进两个空格 符号字符后缩进一个空格如冒号逗号短横杆-等 “—”表示YAML格式一个文件的开始用于分隔文件间 “#”表示注释
二、YAML 文件
1. 如何获取 api 资源相关信息
#查看 api 资源版本标签
kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1#查看资源所需要的版本
kubectl api-resources#查看字段帮助信息可一层层的查看相关资源对象的帮助信息#获取资源及其字段的文档
kubectl explain XXXX例如
kubectl explain deployment #查看资源字段文档
kubectl explain deployment.metadata2. 编写资源配置文件
mkdir /opt/demo
cd demo/2.1 手动编写 yaml 文件
编写deployment文件
vim nginx-deployment.yaml
apiVersion: apps/v1 #指定api版本标签
kind: Deployment #定义资源的类型/角色deployment为副本控制器此处资源类型可以是Deployment、Job、Ingress、Service等
metadata: #定义资源的元数据信息比如资源的名称、namespace、标签等信息name: nginx-deployment #定义资源的名称在同一个namespace空间中必须是唯一的labels: #定义Deployment资源标签app: nginx
spec: #定义deployment资源需要的参数属性诸如是否在容器失败时重新启动容器的属性replicas: 3 #定义副本数量selector: #定义标签选择器matchLabels: #定义匹配标签app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致template: #定义业务模板如果有多个副本所有副本的属性会按照模板的相关配置进行匹配metadata:labels: #定义Pod副本将使用的标签需与 .spec.selector.matchLabels 定义的标签保持一致app: nginxspec:containers: #定义容器属性- name: nginx #定义一个容器名一个 - name: 定义一个容器image: nginx:1.15.4 #定义容器使用的镜像以及版本ports:- containerPort: 80 #定义容器的对外的端口#创建资源对象
kubectl create -f nginx-deployment.yaml#查看创建的pod资源
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-5658bdf5d4-k9pjg 1/1 Running 0 134m 10.244.2.8 node02 none none
nginx-deployment-746ccc65d8-6rkbg 1/1 Running 0 58s 10.244.2.9 node02 none none
nginx-deployment-746ccc65d8-b2vp5 1/1 Running 0 58s 10.244.1.9 node01 none none
nginx-deployment-746ccc65d8-nn449 1/1 Running 0 58s 10.244.1.8 node01 none none编写service文件
#创建service服务对外提供访问并测试
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-servicelabels:app: nginx
spec:type: NodePort ports:- port: 80targetPort: 80 selector:app: nginx#创建资源对象
kubectl create -f nginx-service.yaml #查看创建的service
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 none 443/TCP 178m
nginx-service NodePort 10.96.77.77 none 80:31636/TCP 19s#在浏览器输入 nodeIP:nodePort 即可访问
http://192.168.145.12:31636
http://192.168.145.13:31636详解K8S中的port
port是 k8s 集群内部访问service的端口即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service。nodePort 是外部访问 k8s 集群中 service 的端口通过 nodeIP: nodePort 可以从外部访问到某个 service。targetPort 是 Pod 的端口从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上最后进入容器。containerPort 是 Pod 内部容器的端口targetPort 映射到 containerPort。
2.2 使用镜像生成 yaml 文件
#kubectl run --dry-runclient 打印相应的 API 对象而不执行创建
kubectl run nginx-test --imagenginx --port80 --dry-runclient #后续可以修改
kubectl create deployment nginx-deploy --imagenginx --port80 --replicas3 --dry-runclient#查看生成yaml格式
kubectl run nginx-test --imagenginx --port80 --dry-runclient -o yaml
kubectl create deployment nginx-deploy --imagenginx --port80 --replicas3 --dry-runclient -o yaml#查看生成json格式
kubectl run nginx-test --imagenginx --port80 --dry-runclient -o json
kubectl create deployment nginx-deploy --imagenginx --port80 --replicas3 --dry-runclient -o json#使用yaml格式导出生成模板并进行修改以及删除一些不必要的参数
kubectl run nginx-test --imagenginx --port80 --dry-runclient -o yaml nginx-test.yaml
kubectl create deployment nginx-deploy --imagenginx --port80 --replicas3 --dry-runclient -o yaml nginx-deploy.yaml2.3 根据现有资源导出 yaml 文件
#将现有的资源生成模板导出
kubectl get svc nginx-service -o yaml#保存到文件中
kubectl get svc nginx-service -o yaml my-svc.yaml #删除不需要的字段#查看字段帮助信息可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers总结
1. 如何获取资源清单文件yaml配置文件
1 手撕 yaml 配置文件可根据 kubectl explain 命令获取字段信息
2 无中生有的方式 kuectl create|run|expose ... --dry-runclient -o yaml XXX.yaml
3 查看已存在的资源配置方式kubectl get 资源类型资源名称 -n 命令空间 -o yaml XXX.yamlkubectl edit 资源类型 资源名称 手动复制资源配置再粘贴到文件中
4 复制官方文档的资源配置案例 2. 如何设置流量发送给本机或者其他节点的Pod
在K8S的service对象申明一条访问通道中设置externalTrafficPolicy字段cluster默认模式设置将请求发送给其他节点的pod
local设置将请求发送给本机的pod