Kubernetes学习笔记之资源清单篇(三)

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资源清单使用帮助
在这里插入图片描述
编写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名称空间下的资源)
在这里插入图片描述

删除资源
kubectl delete -f xxxfilename

示例

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

猜你喜欢

转载自blog.csdn.net/Habo_/article/details/126566974