集群资源清单(YAML)文件

资源清单描述方法:

在k8s中,一般使用yaml格式的文件来创建符合我们预期的pod,这样的yaml文件,被称为资源清单

常用的字段有:

apiVersion

        这里是指k8s api的版本,目前基本上是v1.可以用以下命令来查看所有的版本,由组名+版本号组成,group/version,如果group省略,则表示核心组的定义,创建任何资源时都需要定义大部分为v1,但v1不支持deployment,用扩展版/v1beta1可支持deployment。

# 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

kind

        这里指的是yaml文件定义的资源类型和角色,比如:Pod,ngress,Deployment,Service,Namespace等。

metadata

        它包含了我们所定义的kind一些信息,namespace

        name:

                元数据对象的名字,比如pod的name。

        namespace:

                元数据对象的命名空间,由我们自身定义

Spec

        详细定义对象,固定值就写Spec

        containers:

                list:这里是Spec对象的容器列表定义,是个列表

                name:容器的名字

                image:要用到的镜像名称

                imagePullPolicy:定义镜像拉取策略,有Always(每次都尝试重新拉取镜像),Never(仅使用本地镜像),IfNotPresent(如果本地存在就使用本地镜像,本地不存在就拉取镜像)

                command:容器启动的命令,使用数组可以指定多个,不指定则使用镜像打包时使用的

                args:容器启动命令参数,

                workDir:容器的工作目录

                volumeMounts:容器内部的存储卷配置

                        name:指定可以被容器挂载的存储卷的名称

                        mountPath:指定可以被容器挂载的存储卷的路径

                        readOnly:设置存储卷路径的读写模式,true或false,默认为读

                ports:指定容器需要使用到的端口列表

                        name:指定端口的名称

                        containerPort:指定容器要监听的端口号

                        hostPort:指定容器所在主机需要监听的端口(默认与containerPort相同)注意设置了 hostPort同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突

                        protocol:指定端口协议,支持tcp和udp,默认tcp

                env:指定容器运行前需设的环境变量列表

                        name:指定环境变量的名称

                        value:指定环境变量的值

                resources:指定资源限制和资源请求的值

                        limits:指定设置容器运行时资源的运行上限

                                cpu:cpu限制,单位为core数,将用于运行docker

                                memory:指定MEM内存的限制,单位为MiB,GiB

                        requests:容器启动和调度时的限制设置

                                cpu:cpu请求,容器启动时初始化可用的数量

                                memory:内存请求,单位为MiB,GiB

               restartPolicy:

                         定义Pod的重启策略,可选值为Always(一旦终止运行,则无论容器时如何终止的,kubelet服务都将重启它),OnFailure(只有pod以非零退出码终止时kubelet才会重启该容器),Never(Pod终止后,kubelet将退出码报告给Master,不会重启该Pod)

                imagePullSecrets:

                        定义pull镜像时使用secret名称,以name:secretkey格式指定

                hostNetwork:

                        定义是否使用主机网络模式,默认值为False,设置True表示使用宿主机网络,

编写一个简单的yaml文件,创建一个pod

编写文件

[root@k8s-master ~]# cat hello.yml
---
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
spec:
  containers:
  - name: hello
    image: daocloud.io/library/centos:7
    command: ["/bin/echo","hello","world"]

查看

[root@k8s-master ~]# kubectl get pod pod-demo
NAME       READY   STATUS             RESTARTS   AGE
pod-demo   0/1     CrashLoopBackOff   51         2d19h

编写一个简单的yaml文件,创建一个namespace

编写文件

[root@k8s-master ~]# cat namespace.yaml
---
apiVersion: v1
kind: Namespace
metadata:
  name: ns-monitor
  labels:
    name: na-monitor
[root@k8s-master ~]# kubectl apply -f namespace.yaml
namespace/ns-monitor created

查看

[root@k8s-master ~]# kubectl get namespace | grep ns
ns-monitor        Active   5m7s

编写一个简单的yaml文件,创建一个deployment

编写文件

[root@k8s-master ~]# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
[root@k8s-master ~]# cat nginx-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: daocloud.io/library/nginx
        ports:
        - containerPort: 80

查看

[root@k8s-master ~]# kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           85s

 

编写一个简单的yaml文件,创建一个Service

编写文件

[root@k8s-master ~]# vim nginx-service.yaml
[root@k8s-master ~]# kubectl apply -f nginx-service.yaml
service/nginx-service created
[root@k8s-master ~]# cat nginx-service.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx

查看

[root@k8s-master ~]# kubectl get service
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.1.0.1       <none>        443/TCP   3d2h
nginx-service   ClusterIP   10.1.162.240   <none>        80/TCP    60s

YAML资源限制

编写文件

[root@k8s-master ~]# vim pod-demo.yaml
[root@k8s-master ~]# cat pod-demo.yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    apps: nginx
spec:
  containers:
  - name: nginx
    image: daocloud.io/library/nginx
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
[root@k8s-master ~]# kubectl apply -f pod-demo.yaml
pod/nginx-pod created

查看

[root@k8s-master ~]# kubectl get pod nginx-pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          50s

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值