Kubernetes资源清单定义入门-五

1、k8s中的资源

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

在k8s中有哪些资源?
工作负载型资源(workload):
    Pod ReplicaSet Deployment StatefulSet DaemonSet Job CronJob (ReplicationController在v1.11版本被废弃)

服务发现及负载均衡型资源:
      ServiceDiscovery LoadBalance  Service Ingress, ...

配置与存储型资源:
    Volume(存储卷) CSI(容器存储接口,可以扩展各种各样的第三方存储卷)

特殊类型的存储卷:
    ConfigMap(当配置中心来使用的资源类型)Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)

以上这些资源都是配置在名称空间级别。



集群级资源:
    Namespace  Node  Role  ClusterRole  RoleBinding(角色绑定)  ClusterRoleBinding(集群角色绑定)

元数据型资源:
    HPA(Pod水平扩展)  PodTemplate(Pod模板,用于让控制器创建Pod时使用的模板)  LimitRange(用来定义硬件资源限制的)


2、k8s的资源清单

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

资源清单的格式:
apiVersion: group/apiversion:   如果没有给定group名称,那么默认为croe,可以使用kubectl api-versions 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)

kind:  资源类别

metadata: 资源元数据
  name
  namespace  #k8s自身的namespace
  lables
     annotations #主要目的是方便用户阅读查找

spec:期望的状态(disired state)

status:当前状态,本字段有kubernetes自身维护,用户不能去定义


[root@master ~]# kubectl get pods myapp-9b4987d5-2k86k -o yaml    #查看一个pod的信息,以yaml格式输出
[root@master ~]# kubectl explain pod    #查看资源定义文档的格式
[root@master ~]# kubectl explain pod.spec    #可以一级一级查看


3、创建一个配置清单实例

apiVersion: v1
kind: Pod                              #定义pod
metadata:
  name: pod-demo                       #pod的名称,全局唯一
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp                        #容器名称
    image: ikubernetes/myapp:v1        #容器镜像
  - name: busybox                      #容器名称
    image: busybox:latest              #容器镜像
    command:                           #执行的命令
    - "/bin/sh"
    - "-c"
    - "sleep 3600"


[root@master manifests]# kubectl create -f pod.demo.yaml         #从文件加载,创建一个pod

[root@master ~]# kubectl describe pods pod-demo                  #查看pod启动信息    
    
[root@master manifests]# kubectl logs pod-demo busybox           #查看一个pod内容器的日志    
    
[root@master ~]# kubectl exec -it pod-demo -c myapp -- /bin/sh    #交互式进入pod名字为pod-demo里的myapp容器
    
[root@master manifests]# kubectl delete -f pod.demo.yaml          #删除用这个文件所定义的资源(pod,等)
原文地址:https://www.cnblogs.com/weiyiming007/p/12713209.html