视频来源:B站《2021 年末倾力打造 Kubernetes 入门至精通 - 2022 年幸福的开胃菜》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Kubernetes基础自学系列 | 汇总_COCOgsta的博客-CSDN博客


K8S中的资源

K8S中所有的内容都抽象为资源,资源实例化之后,叫做对象

名称空间级别

  • 工作负载型资源:Pod、ReplicaSet、Deployment...
  • 服务发现及负载均衡型资源:Service、Ingress...
  • 配置与存储型资源:Volume、CSI...
  • 特殊类型的存储卷:ConfigMap、Secret...

集群级资源

  • Namespace、Node、ClusterRole、ClusterRoleBinding

元数据型资源

  • HPA、PodTemplate、LimitRange

资源清单

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

资源清单格式

apiVersion: group/apiversion # 如果没有给定group名称,那么默认为core,可以使用kubectl api-versions # 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)
kind: # 资源类别
metadata: # 资源元数据
  name
  namespace
  lables
  annotations # 主要目的是方便用户阅读查找
spec: # 期望的状态(disired state)
status: # 当前状态,本字段有Kubernetes自身维护,用户不能去定义

配置清单主要有五个一级字段,其中status用户不能定义,由k8s自身维护

资源清单的常用命令

获取apiversion版本信息

[root@k8s-master01 ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
......(以下省略)

获取资源的apiVersion版本信息

[root@k8s-master01 ~]# kubectl explain pod
KIND:          Pod
VERSION:    v1
......(以下省略)

[root@k8s-master01 ~]# kubectl explain Ingress
KIND:          Ingress
VERSION:   extensions/v1beta1

获取字段设置帮助文档

[root@k8s-master01 ~]# kubectl explain pod
KIND:          Pod
VERSION:    v1

DESCRIPTION:
           Pod is a collection of containers that can run on a host. This resource is
           created by clients and scheduled onto hosts.
 
FIELDS:
       apiVersion       <string>
           ........
           ........

字段配置格式

apiVersion <string>                   #表示字符串类型
metadata <Object>                   #表示需要嵌套多层字段
labels <map[string]string>        #表示由k:v组成的映射
finalizers <[]string>                   #表示字符串列表
ownerReferences <[]Object>    #表示对象列表
hostPID <boolean>                   #布尔类型
priority <integer>                      #整型
name <string> -required-         #如果类型后面接 -required,表示为必填字段

通过定义清单文件创建Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-1
    image: wangyanglinux/myapp:v1
  - name: busybox-1
    image: busybox:1.34.1
    command:
    - "/bin/sh"
    - "-c"
    - "sleep 3600"
kubectl get pod xx.xx.xx -o yaml
使用 -o 参数加 yaml,可以将资源的配置以yaml的格式输出出来,也可以使用json,输出为json格式

资源被创建的流程:yaml > kubectl > json > apiServer

常用字段解释

Logo

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

更多推荐