28 天带你玩转 Kubernetes-- 第四天(资源介绍)
上一篇我们完成了 K8s 集群的安装,并可以通过 kubectl 操作集群。那么这节课我们介绍下 K8s 中最重要也最常用的几种资源。
一、什么是 K8s 资源?
K8s 中所有的内容都抽象为资源,资源实例化后就是对象。这个可以类比为 Java 中的类和对象的关系。
二、K8s 中资源的种类
K8s 中的资源种类非常非常多,下面只是列了一部分:
除此之外,K8s 还支持自定义的资源,CRD(Custom Resource Definition)可以扩展出更多的资源。
学习 K8s 首先就是要学习 K8s 自己定义的资源,现在看着很可怕,但是大家不用担心,我们先学习最常用的,其他的用到再学习。
三、资源清单
之前说过 K8s 有个特点就是“面向终态”的。就是你只需要告诉 K8s 你最后想要的状态,K8s 自己会尽最大努力去达成这个状态。
那么如何描述这个状态呢?K8s 使用一种 yml 格式的资源清单来描述资源的最终状态,然后你只要将这个资源清单提交给 K8s,K8s 就会根据资源清单给你创建资源对象。
在这里先给大家介绍一下 K8s 中最最最重要的资源 Pod。它是 K8s 中最小的资源调度单位。它可以包含一个或多个容器。我们的程序最终都是通过容器运行在 Pod 中的。(先了解这么多,后面会有单独的章节详细介绍)
那么我们先来看一个最基本的 Pod 的资源清单:
看起来还是有些复杂,不过我们一个个分析就会非常简单:
首先在最外层的 key 中有:apiVersion、kind、metadata、spec 这四个字段,这是大部分资源清单都会有的字段。
apiVersion:指的是 K8s API 的版本,可以用kubectl api-version
查看。
kind:指的是这个 yaml 定义的资源的类型,可以是上面提到的所有资源类型。
metadata:指这个资源的元数据。可以有 name、namespaces、labels 等。
spec:是资源的详细定义,每个对象的 spec 字段都不一样。
比如 Pod 资源对象就包括 containers 字段,这个这个字段描述了创建 Pod 中的容器需要的信息,如镜像名、端口等。
其他 Pod 还有更复杂的资源清单定义,包括其他类型的资源清单定义,后面会有章节详细说明。
四、实战
说了这么多理论下面我们实际的操作一下:
1、编写资源清单
将之前的 pod 的资源清单写到 pod.yaml 文件中。
2、将资源清单提交到 K8s 集群
通过kubectl apply
命令就可以执行 yaml 文件,可以看到 pod 创建成功
3、查看创建的 pod
通过kubectl get pod
的命令就可以查看当前集群的 default 名称空间下的所有 pod,可以看到我们的 pod 的状态是 ContainerCreating,表示正在创建镜像。
过一会再查看:
4、在 dashboard 中查看
至此,我们已经学会了资源的概念和 Pod 资源的创建,更多的资源类型后面章节会一一介绍。敬请期待~
版权声明: 本文为 InfoQ 作者【Java全栈封神】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c044fe530e39873ac5b5e3fe】。文章转载请联系作者。
评论