2025,每天10分钟,跟我学K8S(十)- POD讲解 (一)

        上节课我们学习了YAML的语法,这节课我们来用YAML语法来实际创建一个pod对象,来加深对YAML和POD的理解。

        首先,先了解下什么是POD?

        Kubernetes中的Pod是最小调度单元,包含一个或多个共享网络和存储资源的容器。这些容器始终共同调度,通过localhost直接通信,并作为整体进行管理。从下图可以分析出,K8S只管理到POD层级,POD里面又包含了contained、docker等底层容器,但是这就不属于K8S的管理范畴。

实际创建一个POD

---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
  • apiVersion,这里它的值是 v1,这个版本号需要根据我们安装的 kubernetes 版本和资源类型进行变化的,记住不是写死的

  • kind,这里我们创建的是一个 Pod,当然根据你的实际情况,这里资源类型可以是 Deployment、Job、Ingress、Service 等待。

  • metadata:包含了我们定义的 Pod 的一些 meta 信息,比如名称、namespace、标签等等信息。

  • spec:这里包括一些 containers,storage,volumes,或者其他 Kubernetes 需要知道的参数,以及诸如是否在容器失败时重新启动容器的属性。你可以在特定 Kubernetes API 找到完整的 Kubernetes Pod 的属性。

        在上述例子当中,这是一个简单的最小定义:一个名字(front-end),基于 nginx 的镜像,以及容器 将会监听的一个端口(80)。在这些当中,只有名字是非常需要的,你也可以指定一个更加复杂的属性,例如在容器启动时运行的命令,应使用的参数,工作目录,或每次实例化时是否拉取映像的新副本。

以下是一些容器常用可选的设置属性:

  • name  名称
  • image  镜像地址
  • command  启动后执行命令
  • args   参数
  • workingDir  工作区域
  • ports    端口
  • env      环境变量
  • resources   资源
  • volumeMounts   挂载卷
  • livenessProbe    存活探针
  • readinessProbe  就绪探针
  • StartupProbe   启动探针 
  • volumes

这些属性后面会有单独的章节来讲解。

运用这个yaml文件

kubectl apply -f pod.yaml

查看pod

root@k8s-master:~# kubectl get pod 
NAME    READY   STATUS             RESTARTS   AGE
nginx   0/1     ImagePullBackOff   0          98s

这里发现有报错,pod的状态为ImagePullBackOff,这是为什么?

其实通过ImagePullBackOff 可以得知,这提示了表示镜像无法下载。这是由于现在docker的默认仓库是docker hub,但是现在国内网络经常无法访问,所以将上面的镜像地址修改为daocloud镜像地址。

image: nginx

修改为

image: m.daocloud.io/docker.io/nginx

然后删除后再次执行apply命令。发现pod已经启动成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值