K8S中 yaml 文件详解(pod、deployment、service)

https://blog.csdn.net/duanbaoke/article/details/119238309?spm=1001.2014.3001.5501

前言

一、K8S中的 yaml 文件

yaml语法学习

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

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

YAML语法格式:

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

yaml 文件的学习方法:

  • 多看别人(官方)写的,能读懂
  • 能照着现场的文件改着用
  • 遇到不懂的,善用 kubectl explain ...命令查.

apiVersion 在这里插入图片描述

kubectl api-version

apiVersion kind 对照表
在这里插入图片描述
在这里插入图片描述

二、写一个 yaml 文件,通过声明式创建pod

  • 写一个 yaml 文件demo,用它通过声明式创建pod资源;

创建 Deployment 资源 - kind: Deployment

直接 -o yaml 导出个模板拿来用
在这里插入图片描述

mkdir /opt/demo

vim nginx-demo1.yaml
apiversion: apps/v1    #指定api版本标签】
kind: Deployment       
#定义资源的类型/角色】,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata :          #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx-demo1 #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:    #定义资源标签(Pod的标签)
    app: nginx
spec:  #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  replicas: 3       #定义副本数量
  selector:         #定义标签选择器
    matchLabels :   #定义匹配标签
      app: nginx    #匹配上面的标签,需与上面的标签定义的app保持一致
  template:         #【定义业务模板】,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
    metadata:
      labels:
        app: nginx
    spec:
      containers:       #定义容器属性
        - name: nginx   #定义一个容器名,一个- name:定义一个容器
        image: nginx:1.15.4   #定义容器使用的镜像以及版本
        imagePullPolicy: IfNotPresent #镜像拉取策略
        ports:
        - containerPort: 80   #定义容器的对外的端口

例子

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-demo1
  namespace: kube-public
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.14
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

在这里插入图片描述
使用资源清单创建资源
在这里插入图片描述
在这里插入图片描述

kubectl get deployments. -n kube-public
kubectl get pod,svc -n kube-public

在这里插入图片描述

创建 Service 资源 - kind-Service

#--dry-run 表示测试资源,不是真正的创建
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run

kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > /opt/demo/nginx-demo1-svc.yaml
vim nginx-demo1-svc.yaml

apiVersion: v1
kind: Service
metadata:
  labels
  • 33
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在KubernetesYAML文件用于定义和配置各种资源对象,如PodServiceDeployment等。根据引用\[1\]和引用\[3\]的内容,以下是一些常见的在YAML文件可以使用的参数: 1. name:指定资源对象的名称。 2. image:指定要使用的容器镜像。 3. command:指定容器启动时要执行的命令。 4. args:指定传递给容器的命令行参数。 5. workingDir:指定容器的工作目录。 6. ports:指定容器要监听的端口。 7. env:指定容器的环境变量。 8. resource:指定容器的资源限制和请求。 9. volumeMounts:指定容器挂载的卷。 10. livenessProbe:指定容器的存活探针。 11. readinessProbe:指定容器的就绪探针。 12. lifecycle:指定容器的生命周期钩子。 13. terminationMessagePath:指定容器终止时的消息路径。 14. imagePullPolicy:指定容器拉取镜像的策略。 15. securityContext:指定容器的安全上下文。 16. stdin、stdinOnce、tty:指定容器的标准输入和终端设置。 这些参数可以根据实际需求在YAML文件进行配置,以定义和定制Kubernetes的各种资源对象。 #### 引用[.reference_title] - *1* *2* *3* [K8syaml文件详解(超详细)](https://blog.csdn.net/m0_54024707/article/details/122225607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值