【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
一、Kubernetes 简介
Kubernetes 简称 k8s是支持云原生部署的一个平台起源于谷歌。谷歌早在十几年之前就对其应用通过容器方式进行部署。
k8s 本质上就是用来简化微服务的开发和部署的关注点包括自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics 监控、日志监控、弹性和容错、API 管理、服务安全等k8s 将这些微服务的公共关注点以组件形式封装打包到 k8s 这个大平台中让开发人员在开发微服务时专注于业务逻辑的实现而不需要去特别关系微服务底层的这些公共关注点大大简化了微服务应用的开发和部署提高了开发效率。
二、Kubernetes 架构
k8s 总体架构采用了经典的 master slave 架构模式分 master 节点和 worker 节点节点可以是虚拟机也可以是物理机。
master 节点由以下组件组成
- etcd一种的分布式存储机制底层采用 Raft 协议k8s 集群的状态数据包括配置、节点等都存储于 etcd 中它保存了整个集群的状态。
- API server对外提供操作和获取 k8s 集群资源的的 API是唯一操作 etcd 的组件其他的组件包括管理员操作都是通过 API server 进行交互的可以将它理解成 etcd 的 “代理人”。
- Scheduler在 k8s 集群中做调动决策负责资源的调度按照预定的调度策略将 Pod 调度到相应的机器上。
- Controller Manager相当于集群状态的协调者观察着集群的实际状态与 etcd 中的预期状态进行对比如果不一致则对资源进行协调操作让实际状态和预期状态达到最终的一致维护集群的状态比如故障检测、自动扩展、滚动更新等。
worker 节点由以下组件组成
- Controller Runtime下载镜像和运行容器的组件负责镜像管理以及 Pod 和容器的真正运行CRI。
- Podk8s 中特有的一个概念可以理解为对容器的包装是 k8s 的基本调度单位实际的容器时运行在 Pod 中的一个节点可以启动一个或多个 Pod。
- kubelet负责管理 worker 节点上的组件与 master 节点上的 API server 节点进行交互接受指令执行操作。
- kube-proxy负责对 Pod 进行寻址和负载均衡
用户操作 k8s 集群一般是通过 kubectl 命令行工具或者 dashboardPod 之间进行通讯是通过集群内部的覆盖网络 Overlay Network外部流量想要进入集群访问 Pod 则是通过负载均衡 Load Balander 设备进行。
三、Kunbernetes 有哪些核心概念
1. 集群 Cluster
集群有多个节点组成且可以按需添加节点物理机/虚拟机每一个节点都包含一定数量的 CPU 和内存 RAM。
2. 容器 Container
k8s 本身是一个容器调度平台从宿主机操作系统来看容器就是一个一个的进程。从容器内部来看容器就是一个操作系统它有着自己的网络、CPU、文件系统等资源。
3. POD
k8s 也不是直接调度容器的而是将其封装成了一个个 PODPOD 才是 k8s 的基本调度单位。每个 POD 中可以运行一个或多个容器共享 POD 的文件系统、IP 和网络等资源每一个 POD 只有一个 IP。
4. 副本集 ReplicaSet
一个应用发布时会发布多个 POD 实例副本集可对应一个应用的一组 POD它可以通过模板来规范某个应用的容器镜像、端口副本数量等。运行时副本集会监控和维护 POD 的数量数量过多则会下线 POD过少则启动 POD。
5. 服务 service
POD 在 k8s 中是不固定的可能会挂起或者重启且挂起重启都是不可预期的那么这就会导致服务的 IP 也随着不停的变化给用户的寻址造成一定的困难。而 service 就是用来解决这个问题的它屏蔽了应用的 IP 寻址和负载均衡消费方可直接通过服务名来访问目标服务寻址和负载均衡均由 service 底层进行。
6. 发布 Deployment
副本集就是一种基本的发布机制可以实现基本的或者高级的应用发布但操作较为繁琐。未来简化这些操作k8s 引入了 Deployment 来管理 ReplicaSet实现一些高级发布机制。
7. ConfigMap/Secret
微服务在上线时需要设置一些可变配置环境不同则配置值不同有些配置如数据库的连接字符串在启动时就应该配好有些配置则可以在运行中动态调整。为了实现针对不同环境灵活实现动态配置微服务就需要 ConfigMap 的支持。
k8s 平台内置支持微服务的配置ConfigMap开发人员将配置填写在 ConfigMap 中k8s 再 将 ConfigMap 中的配置以环境变量的形式注入 POD这样 POD 中的应用就可以访问这些配置。
Secret 是一种特殊的 ConfigMap提供更加安全的存储和访问配置机制。
8. DaemonSet
在微服务中每个节点需要配置一个常驻守护进程。DaemonSet 可支持在每一个 worker 节点上面配置一个守护进程 POD 并且保证每一个节点上有且仅有一个 POD。
9. 核心概念总结
概念 | 作用 |
---|---|
cluster | 超大计算机抽象由节点组成 |
Container | 应用居住和运行在容器中 |
Pod | Kubernetes 基本调度单位 |
Service | 应用Pods的访问点屏蔽IP寻址和负载均衡 |
Deployment | 管理ReplicaSet支持滚动等高级发布机制 |
ConfigMap/Secrets | 应用配置secret敏感数据配置 |
DaemonSet | 保证每个节点有且仅有一个Pod常见于监控 |
以上概念点为 Kubernetes 最基本和最重要的概念总结掌握后可适用于绝大部分云原生场景还有部分概念本文未作介绍。