GaussDB(DWS) k8s简介以及管控面微服务
Kubernetes概述
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。
master上的组件主要有API service 、调度器和controller manager,controller manager上有一组控制器;k8s上API对象所有的状态变化都存储在ETCD上面,
节点/node:在这里最主要的两个概念kubelet、kube-proxy
kubelet主要负责:pod被调度之后完整的生命周期的管理
kube-proxy主要负责:services和endpoint的生命周期的管理,给pod配置loadbalance规则;
Kubernetes中基本概念
- Cluster : 集群是指由Kubernetes使用一系列的物理机、虚拟机和其他基础资源来运行你的应用程序。
- Node : 一个node就是一个运行着Kubernetes的物理机或虚拟机,并且pod可以在其上面被调度。.
- Pod : 一个pod对应一个由相关容器和卷组成的容器组 (了解Pod详情)
- Label : 一个label是一个被附加到资源上的键/值对,譬如附加到一个Pod上,为它传递一个用户自定的并且可识别的属性.Label还可以被应用来组织和选择子网中的资源(了解Label详情)
- selector是一个通过匹配labels来定义资源之间关系得表达式,例如为一个负载均衡的service指定所目标Pod.(了解selector详情)
- Replication Controller : replication controller 是为了保证一定数量被指定的Pod的复制品在任何时间都能正常工作.它不仅允许复制的系统易于扩展,还会处理当pod在机器在重启或发生故障的时候再次创建一个(了解Replication Controller详情)
- Service : 一个service定义了访问pod的方式,就像单个固定的IP地址和与其相对应的DNS名之间的关系。(了解Service详情)
- Volume: 一个volume是一个目录,可能会被容器作为未见系统的一部分来访问。(了解Volume详情)
- Kubernetes volume 构建在Docker Volumes之上,并且支持添加和配置volume目录或者其他存储设备。
- Secret : Secret 存储了敏感数据,例如能允许容器接收请求的权限令牌。
- Name : 用户为Kubernetes中资源定义的名字
- Namespace : Namespace 好比一个资源名字的前缀。它帮助不同的项目、团队或是客户可以共享cluster,例如防止相互独立的团队间出现命名冲突
- Annotation : 相对于label来说可以容纳更大的键值对,它对我们来说可能是不可读的数据,只是为了存储不可识别的辅助数据,尤其是一些被工具或系统扩展用来操作的数据
名词解释 Pods
在Kubernetes中,最小的管理元素不是一个个独立的容器,而是Pod,Pod是最小的,管理,创建,计划的最小单元.,一组container的集合,scheduling为pod找到一个合适的Node。
名词解释:Node
Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。
每个Node都包括以下状态信息
- 地址:包括hostname、外网IP和内网IP
- 条件(Condition):包括OutOfDisk、Ready、MemoryPressure和DiskPressure
- 容量(Capacity):Node上的可用资源,包括CPU、内存和Pod总数
- 基本信息(Info):包括内核版本、容器引擎版本、OS类型等
名称解释:Deployment
Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:
- 定义Deployment来创建Pod和ReplicaSet
- 滚动升级和回滚应用
- 扩容和缩容
- 暂停和继续Deployment
名词解释 Services
Kubernetes Pod是平凡的,它门会被创建,也会死掉(生老病死),并且他们是不可复活的。 ReplicationControllers动态的创建和销毁Pods(比如规模扩大或者缩小,或者执行动态更新)。每个pod都由自己的ip,这些IP也随着时间的变化也不能持续依赖。这样就引发了一个问题:如果一些Pods(让我们叫它作后台,后端)提供了一些功能供其它的Pod使用(让我们叫作前台),在kubernete集群中是如何实现让这些前台能够持续的追踪到这些后台的?
答案是:Service
Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务。这些被服务标记的Pod都是(一般)通过label Selector决定的(下面我们会讲到我们为什么需要一个没有label selector的服务)
名词解释:ConfigMap
ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。
可以使用kubectl create configmap从文件、目录或者key-value字符串创建等创建ConfigMap。
ConfigMap可以通过多种方式在Pod中使用,比如设置环境变量、设置容器命令行参数、在Volume中创建配置文件等。
kubernetes API对象基本构成
- typeMeta:主要表面是哪个类型对象,版本
- objectMeta:对象元数据
- spec:期望状态
- status:实际状态
Pod调度
服务容器化
管控面微服务运行在容器平台(kubernetes)上而不是现在的ECS VM上,利用容器平台(kubernetes)自动化的部署,运行,和扩展服务;集成Service Mesh 微服务框架,为管控面服务提供一个完整的服务部署,运行,治理的环境。管控面统一使用SRE的CDK工具来部署。
通过Kubernetes可以:
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
目标:促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担
Kubernetes的特点:
可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展:模块化,插件化,可挂载,可组合
自动化:自动部署,自动重启,自动复制,自动伸缩/扩展
k8s常用查询,主要是node/pod/configmap/deployment/service
- 点赞
- 收藏
- 关注作者
评论(0)