Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解

本文介绍了如何在Kubernetes (K8S) 中使用YAML文件创建Pod,详细讲解了Pod的常用字段,包括资源需求(Requests)和限制(Limits),volumeMounts与volumes的区别,并提供了具体的yaml示例。此外,还探讨了Pod的volume查看和nginx站点访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YAML语法规范;在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解

YAML 语法规范

K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义。YAML 是一个 JSON 的超集,任何有效的 JSON 文件也都是一个有效的YAML文件。

具体参见:「YAML 语言教程与使用案例

通过yaml创建nginx pod对象

yaml文件

在Kubernetes的 yaml文件中,最好不要出现下划线,可以有中横线

[root@k8s-master test]# pwd
/root/k8s_practice/test
[root@k8s-master test]# cat nginx_demo.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
  namespace: default
  labels:
    k8s-app: nginx
    environment: dev
  annotations:
    name: nginx-demo
spec:
  containers:
  - name: nginx
    image: registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17
    imagePullPolicy: IfNotPresent
    ports:
    - name: httpd
      containerPort: 80
      #除非绝对必要,否则不要为 Pod 指定 hostPort。 将 Pod 绑定到hostPort时,它会限制 Pod 可以调度的位置数
      #DaemonSet 中的 Pod 可以使用 hostPort,从而可以通过节点 IP 访问到 Pod;因为DaemonSet模式下Pod不会被调度到其他节点。
      #一般情况下 containerPort与hostPort值相同
      hostPort: 8090     #可以通过宿主机+hostPort的方式访问该Pod。例如:pod在/调度到了k8s-node02【172.16.1.112】,那么该Pod可以通过172.16.1.112:8090方式进行访问。
      protocol: TCP
    volumeMounts:        #定义容器挂载内容
    - name: nginx-site   #使用的存储卷名称,跟下面volume字段的某个name值相同,这里表示使用volume的nginx-site这个存储卷
      mountPath: /usr/share/nginx/html  #挂载至容器中哪个目录
      readOnly: false                   #读写挂载方式,默认为读写模式false
    - name: nginx-log
      mountPath: /var/log/nginx/
      readOnly: false
  volumes:              #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷
  - name: nginx-site    #存储卷名称
    hostPath:           #路径,为宿主机存储路径
      path: /data/volumes/nginx/html/   #在宿主机上目录的路径
      type: DirectoryOrCreate           #定义类型,这表示如果宿主机没有此目录,则会自动创建
  - name: nginx-log
    hostPath:
      path: /data/volumes/nginx/log/
      type: DirectoryOrCreate

Pod常见操作

[root@k8s-master test]# pwd
/root/k8s_practice/test
[root@k8s-master test]# ll
total 4
-rw-r--r-- 1 root root 1317 Jul 29 16:42 nginx_demo.yaml
# 创建pod
[root@k8s-master test]# kubectl apply -f nginx_demo.yaml 
pod/nginx-demo created
# 查看pod。根据结果可见被调度到了 k8s-node02 节点
[root@k8s-master test]# kubectl get pod -o wide   # 或者 kubectl get pod -n default -o wide  因为名称空间为default
NAME                READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
nginx-demo          1/1     Running   0          10s   10.244.2.16   k8s-node02   <none>           <none&g
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值