f4505c118596cb4856ce536ce803c0d7.gif

上期,我们学习了什么是YAML文件。本期课程,我们来学习如何使用YAML创建Pod。

piVersion: v1

kind: Pod

metadata:

  name: static-web

  labels:

    app: web

spec:

  containers:

    - name: web-front

      image: nginx

      ports:

        - name: web

          containerPort: 80

          protocol: TCP

上面的YAML配置定义的一个普通的POD 文件,我们先来简单分析下文件内容:

apiVersion:此处值是v1,这个版本号需要根据安装的Kubernetes版本和资源类型进行变化,记住不是写死的。

kind:此处创建的是Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。

metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息。

spec:包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。

585470fa6d328dab1f040f9d483177f2.png

查看apiVersion

[root@vms20 pod]# kubectl api-versions

admissionregistration.k8s.io/v1

...

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

...

v1

585470fa6d328dab1f040f9d483177f2.png

一个典型的容器定义

spec:

  containers:

    - name: front-end

      image: nginx

      ports:

        - containerPort: 80

上述例子只是一个简单的最小定义:一个名字(front-end)、基于nginx的镜像,以及容器将会监听的指定端口号(80)

除了上述的基本属性外,还能够指定复杂的属性,包括容器启动运行的命令、使用的参数、工作目录以及每次实例化是否拉取新的副本。还可以指定更深入的信息,例如容器的退出日志的位置。容器可选的设置属性包括:

name、image、command、args、workingDir、ports、env、resource、volumeMounts、livenessProbe、readinessProbe、livecycle、terminationMessagePath、imagePullPolicy、securityContext、stdin、stdinOnce、tty

585470fa6d328dab1f040f9d483177f2.png

kubectl创建Pod

明白了POD 的定义后,我们将上面创建POD 的YAML 文件保存成pod.yaml,然后使用kubectl创建POD:

[root@vms20 pod]# kubectl apply -f pod.yaml

pod/static-web created

585470fa6d328dab1f040f9d483177f2.png

查看Pod状态

使用我们kubectl get pods命令来查看POD 的状态:

[root@vms20 pod]# kubectl get pods -l app=web

NAME         READY   STATUS    RESTARTS   AGE

static-web   1/1     Running   0          2m23s

fc9437a1d7194d91454db0fcef11ab36.png
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐