当前位置:   article > 正文

YAML详情

YAML详情

一、kubernetes支持对象

  Kubernetes支持YAML和JSON格式管理资源对象

  • JSON格式:主要用于api接口之间消息的传递
  • YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读

二、YAML语法格式注意点

  • 大小写敏感
  • 使用缩进表示层级关系
  • 不支持Tab键制表符缩进,只使用空格缩进
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
  • 符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
  • “---”表示YAML格式,一个文件的开始,用于分隔文件间
  • “#”表示注释

三、YAML部署

  3.1 查看api资源版本标签

kubectl api-versions

  3.2 写一个YAML文件demo

  1. mkdir /opt/demo
  2. cd demo/
  3. vim nginx-deployment.yaml
  4. apiVersion: apps/v1 #指定api版本标签
  5. kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
  6. metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  7. name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的
  8. labels: #定义Deployment资源标签
  9. app: nginx
  10. spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  11. replicas: 3 #定义副本数量
  12. selector: #定义标签选择器
  13. matchLabels: #定义匹配标签
  14. app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致
  15. template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
  16. metadata:
  17. labels: #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
  18. app: nginx
  19. spec:
  20. containers: #定义容器属性
  21. - name: nginx #定义一个容器名,一个 - name: 定义一个容器
  22. image: nginx:1.15.4 #定义容器使用的镜像以及版本
  23. ports:
  24. - containerPort: 80 #定义容器的对外的端口

  3.3 创建资源对象并查看

  1. kubectl create -f nginx-deployment.yaml
  2. kubectl get pods -o wide

   3.4 创建service服务对外提供访问并测试

  1. vim nginx-service.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: nginx-service
  6. labels:
  7. app: nginx
  8. spec:
  9. type: NodePort
  10. ports:
  11. - port: 80
  12. targetPort: 80
  13. selector:
  14. app: nginx

  3.5 创建资源对象并查看创建的service

  1. kubectl create -f nginx-service.yaml
  2. kubectl get svc

  3.6 在浏览器输入nodeIP:nodePort即可访问

    例如:http://192.168.10.6:30061

  3.7 详解k8s端口

    在Kubernetes中,端口的概念非常重要。Pod中的应用程序可能需要暴露一些端口来让其他Pod或外部应用程序访问。在Kubernetes中,端口主要分为两种类型分别是节点端口集群内部端口

  3.7.1 节点端口

  节点端口(NodePort)允许外部流量通过节点直接访问Pod。使用这种方式后,外部流量将会通过节点的IP地址和指定的端口转发到相应的Pod。NodePort随机指定一个端口号,端口范围在30000-32767之间。可以通过指定NodePort的值来指定一个特定的节点端口。

  • nodePort:nodePort是外部访问k8s集群中service的端口,通过nodeIP:nodePort可以从外部访问到某个service。
  • nodePort:nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。

  • targetPort:targetPort是Pod的端口,从port或nodePort来的流量经过kube-proxy反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器。

  • containerPort:containerPort是Pod内部容器的端口,targetPort映射到containerPort。

  3.7.2 集群内部端口

  集群内部端口暴露应用程序服务给其他Pod使用。通过定义端口并把它们暴露给其他Pod,可以方便地实现服务发现和内部路由功能。在Kubernetes中,有三种类型的内部端口:容器端口(Container Port)名称化端口(Named Port)端点端口(Endpoint Port)

  • 容器端口(Container Port):应用程序在容器内部暴露的端口号。
  • 名称化端口(Named Port):在为抽Service中定义的端口,作象概念使用,并将请求转发到一个或多个容器端口。
  • 端点端口(Endpoint Port):通过Service提供的端口,它将转发到一个或多个Pod的容器端口和IP地址。

  这些端口类型可用于不同的场景,可以根据需求来选择具体的端口类型。

  在Kubernetes中定义端口时,通常需要指定两个属性:端口号和协议类型。端口号是一个整数,协议类型可以是TCP或UDP。例如,定义TCP协议的8080端口可以写成:8080/TCP。通过这两个属性定义,Kubernetes能够正确接受和转发请求,从而使应用程序正常工作。

  3.8 kubectl run --dry-run=client打印相应的API对象而不执行创建

  1. kubectl run nginx-test --image=nginx --port=80 --dry-run=client
  2. kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client

  3.9 查看生成yaml格式

  1. kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
  2. kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml

  3.10 查看生成json格式

  1. kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
  2. kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json

  3.11 使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数

  1. kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
  2. kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml
  3. vim nginx-test.yaml
  4. apiVersion: v1
  5. kind: Pod
  6. metadata:
  7. creationTimestamp: null #删除
  8. labels:
  9. run: nginx-test
  10. name: nginx-test
  11. spec:
  12. containers:
  13. - image: nginx
  14. name: nginx-test
  15. ports:
  16. - containerPort: 80
  17. resources: {} #删除
  18. dnsPolicy: ClusterFirst
  19. restartPolicy: Always
  20. status: {} #删除

  3.12 将现有的资源生成模板导出

kubectl get svc nginx-service -o yaml

  3.13 保存到文件中

kubectl get svc nginx-service -o yaml > my-svc.yaml

  3.14 查看字段帮助信息,可一层层的查看相关资源对象的帮助信息

  1. kubectl explain deployments.spec.template.spec.containers
  2. kubectl explain pods.spec.containers

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/613941
推荐阅读
相关标签
  

闽ICP备14008679号