1.什么是kubernetes资源?

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

2.kubernetes资源分类

kubernetes资源主要有,名称空间级别资源、集群级别资源、元数据型资源,等三种资源类型。

2.1名称空间级别资源

只对此名称空间生效,名称空间是一种隔离级别,不同的名称空间之间的资源是相互隔离的,比如我们常用的公有云平台阿里云,A公司和B公司都在阿里云上购买了云服务器资源,虽然是在同一个云平台,也有可能两家公司的云主机在相同的物理机房。但是A不能查看和使用B公司的服务器,B同样也不能查看A的。

2.1.1名称空间级别资源
2.1.1.1工作负载型资源

资源名称

概念

Pod

Pod是kubernetes中的最小调度单元,容器包含在Pod中,一个Pod中有一个pause容器和若干个业务容器,而Pod是一个单独的容器,简而言之Pod就是一组容器的集合。

ReplicaSet

ReplicaSet是kuberntees集群中的副本控制器,主要作用是控制和管理Pod,通常和deployment结合使用

Deployment

用于部署应用的对象,为Pod和ReplicaSet提供了一个声明式定义方法,主要用来管理应用

DaenonSet

守护进程集和守护进程类似,确保在每一个节点上都部署一个pod

Job

负责批量处理短暂的一次性任务,仅执行一次,并保证处理的一个或者多个Pod成功结束。

CronJob

负责定时任务,在指定的时间周期运行指定的任务。

StatefulSet

StatefulSet是为了解决有状态服务的问题,如稳定的持久化存储、稳定的网络标识、有序部署,有序扩展。有序收缩,有序删除

2.1.1.2服务发现及负载均衡型资源

资源名称

概念

Service

是一个抽象概念,它定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。

Ingress

是一种向kubernetes集群外部的客户端公开服务的方法。

2.1.1.3配置与存储型资源

资源名称

概念

Volume

是kubernetes抽象出来的对象,是为了解决Pod容器运行时文件存放问题以及多容器间文件目录共享问题。

CSI

容器存储接口,可以扩展各种第三方存储卷

2.1.1.4特殊类型资源及存储卷资源

资源名称

概念

ConfigMap

配置管理组件,。可以将配置以键值对的形式传递,通常用来保存不需要加密的配置信息

Secret

是一种包含少量敏感信息如密码、令牌、或密钥的对象。

DownwardAPI

用于把外部环境中的信息输出给容器。

2.2集群级别资源

一个集群可能会有多个名称空间、而集群级别资源管理着名称空间级别资源,集群级别资源,不管在那个名称空间下定义集群级别资源,在其他的名称空间下都可以看到,在定义时无需指定名称空间,在整个集群可见、可调用、而且全局唯一。

2.2.1集群级别资源有哪些

资源名称

概念

Namespace

名称空间

Node

集群节点

Role

角色

ClusterRole

集群角色

ClusterRoleBinding

集群角色绑定

2.3元数据型资源

给我们提供一个指标,比如HPA通过定义cpu或者内存使用率的指标来对pod进行水平扩展。这就一个典型的元数据型资源

资源名称

概念

HPA

全称Horizontal Pod Autoscaler是一种资源对象,能够根据某些指标对statefulset、deployment中的pod进行动态伸缩

PodTemplate

pod模板

LimitRange

资源限制

什么是资源清单?

kubernetes中一般使用yaml格式的文件来创建我们所需求的pod、deployment、service等资源对象,这样的yaml文件我们一般称为资源清单。

Pod资源清单示例文件

通过kubectl explain pod来获取,pod资源清单使用帮助

kubernetes 获取service资源对象 kubernetes 资源类型_Deployment


编写pod资源清单文件

#cat demo-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    app: pod-demo
spec:
  containers:
  - name: pod-demo
    image: registry.cn-hangzhou.aliyuncs.com/my_app_repo/nginx:v1
Deployment资源清单示例文件
#cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ngx-demo
  labels:
    app: ngx-dep-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ngx-dep-demo
  template:
    metadata:
      labels:
        app: ngx-dep-demo
    spec:
      containers:
      - name: ngx-demo
        image: registry.cn-hangzhou.aliyuncs.com/my_app_repo/nginx:v1
        ports:
        - containerPort: 80
Service资源清单示例文件
#cat deployment-svc.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:
  name: ngx-dep-test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ngx-dep-test
  template:
    metadata:
      labels:
        app: ngx-dep-test
    spec:
      containers:
        - name: ngx-dep-test
          image: registry.cn-hangzhou.aliyuncs.com/my_app_repo/nginx:v1
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: ngx-dep-test
  name: ngx-dep-test-svc
spec:
  type: ClusterIP
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: ngx-dep-test
创建及查看使用资源清单创建的资源

使用kubectl create或apply -f xxfilename来创建资源

示例

#kubectl apply -f pod.yaml 
deployment.apps/ngx-dep-test created
service/ngx-dep-test-svc created

使用kubectl get xxxx(资源类型名称不指定名称空间的话默认获取的是default名称空间下的资源)

kubernetes 获取service资源对象 kubernetes 资源类型_Deployment_02

删除资源
kubectl delete -f xxxfilename

示例

#kubectl delete -f pod.yaml 
deployment.apps "ngx-dep-test" deleted
service "ngx-dep-test-svc" deleted