《Kubernetes从入门到进阶》之五:创建资源对象
  ETWZF7L1nsXD 2023年11月02日 47 0

Kubernetes API是管理各类资源对象的唯一入口,它提供了一个RESTful风格的接口用于增、删、改、查操作,并将结果存储在etcd中。对于用户而言,直接操作API无疑是不方便的,因此,Kubernetes也为我们提供了kubectl命令行工具,可以让我们使用命令的方式调用API。

当需要创建资源对象时,kubectl可以通过配置列表来声明这些 “对象”。配置列表可以被看作是对象“属性”的描述文件,格式可以是 “JSON” 或 “YAML”,常用的是YAML格式。

以Pod为例,以下是一个简单的pod.yaml文件模板。

apiVersion: v1
kind: Pod
metadata:
    name: myapp-pod
    labels:
      app: myapp
spec:
    containers:
    - name: myapp-container
      image: busybox
      command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

可以看到该文件内容是由几个模块组成,分别是apiVersion、kind、metadata和spec,它们的功能定义如下:

apiVersion:这里指定创建该对象所使用的Kubernetes API版本,目前Kubernetes大部分常见的核心资源对象都归属于v1这个核心API。

kind:指定对象所属的资源类型,如Pod、Service、Deployment等。

metadata:用于配置对象的元数据信息,如名称、标签、注释、namespace等,其中标签是K8s中一个具有特色的概念,我们会在下篇文章中单独介绍。

spec:用于描述对象的规格,可以看作是对象期望的状态。如本例中的Pod对象包含了一个名称为myapp-pod的容器,该容器的镜像为busybox,并带有启动命令。那么,当执行这个配置列表时,kubernetes将按照这个规格去创建Pod。

除了以上四个部分,对象还会有一个status字段,它用于描述对象的实际状态,这部分的内容由Kubernetes系统负责维护和更新。在任何时段,Kubernetes会努力管理着对象的实际状态与期望状态相匹配。

当完成配置列表后,接下来就是将其在集群中声明创建。

如下:

$ kubectl create -f pod.yaml
pod/myapp-pod created

现在,我们查看资源,可以对象实例已经起来了。

$ kubectl  get pod
NAME        READY   STATUS    RESTARTS   AGE
myapp-pod   1/1     Running   0          87s



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ozzp9aSSE46S   2023年11月30日   34   0   0 DNSIPPod
  YKMEHzdP8aoh   2023年12月11日   67   0   0 DNSidePod
ETWZF7L1nsXD