资源对象的种类
今天我们开始研究Kubernetes中的资源对象,资源对象是Kubernetes这个软件定义的抽象逻辑概念,这些资源对象及其对应的属性(如资源对象之间的对应关系),都会保存到ectd数据库中并通过Kubernetes各控制组件实时更新,下面我们先看一下资源对象的分类和用途,然后再根据一个示例图熟悉一下:
1.基础资源对象,例如节点Node,容器组Pod,服务Service,存储卷Volume等;
2.事务与控制器资源对象,例如标签Label,注解Annotation,命名空间Namespace,水平扩容HorizontalPodAutoscaler,配置(ConfigMap、Secret),持久化存储(StorageClass、PersistentVolume、PersistentVolumeClaim),工作负载控制器等(Deployment、StatefulSet、DeamonSet、Job、CronJob)等;
3.管控与权限资源对象,例如资源限制LimitRange,资源配额ResourceQuota,角色Role,角色绑定RoleBinding等;
4.网络相关资源对象,例如Ingress,网络策略NetworkPolicy等;
资源对象的用途
上图示例展示的内容如下:
1.有一个3个工作节点(Node1,Node2,Node3)的Kubernetes集群(这里我们不关心master节点);
2.Pod是Kubernetes中的最基础概念,一个Pod中可以由一个或者多个业务相关性紧密的容器组成。类似于一个docker-compose启动了一个或多个容器,这些容器共享一些信息;
3.Deployment、StatefulSet通过ReplicaSet分别来管理无状态服务、有状态服务(如redis、kafka等)的Pod副本集;
4.DaemonSet用来实现每个Node上只创建一个Pod的需求,如日志采集Pod,监控Pod;Job/CronJob是一次性任务/定时任务,用来实现批处理任务Pod,执行完成后退出,不需要持续运行;
5.Horizontal Pod Autoscaler通过实时监控由Metrics Server等提供的聚合api,实现自定义的水平扩容方案(例如根据CPU<60%的指标,让Pod副本数在3-10之间自动增减);
6.Service为一组Pod提供一个虚拟的网络IP地址,供其他容器访问(如图所示,Node3中有两个Pod容器通过一个Service来访问其他业务的Pod容器);
7.由于环境变量这种Kubernetes服务发现机制的局限性,一般会部署DNS服务,各业务应用在互相调用的时候由IP+端口改为DNS域名;
8.互联网用户访问Kubernetes中的业务应用方式,可以通过Ingress(Ingress类似于Service的边缘代理,如常见的Nginx Ingress等);
9.互联网用户访问Kubernetes中的业务应用方式,可以通过Service的NodePort模式(相当于NAT端口映射到Node主机上,访问Node的IP+端口);
10.互联网用户访问Kubernetes中的业务应用方式,可以通过Service的LoadBalancer模式,这种模式一般由云服务厂商提供集成(例如AWS,用户定义Service的配置,会自动创建出AWS的NLB等);
11.未体现出的资源对象,如持久化存储多用于有状态服务的Pod,配置用来分离容器应用所需的配置信息(如参数,密钥,配置文件等),命名空间用来实现多租户(如不同的业务组下的资源逻辑隔离),等等。
整体看下来比较简单,接下来会逐个深入了解这些资源对象。
标签:03,Service,Kubernetes,容器,对象,零到,Pod,资源 From: https://blog.csdn.net/fzw1030/article/details/141679649