测试开发右移 — Kubernetes 初识,组件和应用

AI摘要
本文介绍了Kubernetes(K8s)的基本概念、核心组件及其功能。Kubernetes是一个用于自动化部署、扩展和管理容器化应用的开源平台。文章对比了传统部署与容器化部署的痛点,阐述了K8s如何解决容器不稳定等问题,并详细说明了其核心架构,包括控制面板组件(如etcd、API Server)、节点组件(如kubelet)以及可选附加组件(如Dashboard)。内容属于技术知识分享,旨在帮助读者理解K8s的工作原理与组件构成。

如果不懂容器概念,或者不懂Docker的建议先去学习这两个东西。

什么是 Kubernetes ?

Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes目的是让部署容器的应用简单并且高效(powerful),Kubernetes 提供了应用部署、规划、更新、维护的一种机制。

传统部署和虚拟化部署的痛点

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

容器化部署痛点

容器删除ip改变,不稳定

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

K8s 可以做什么

如果容器出现异常比如 线程池爆满或者内存溢出,k8s 可以基于一个容器创建新的容器来代替异常容器,并且实现滚动更新,同时支持回滚操作。

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

我们操作的命令行是什么?

我们通过kubernetes 控制台操作的命令对于kubernetes来说它接收到的是一个个api请求,它内部是一整套精密的组件。同时kubernetes也有图形化操作界面,但是我推荐大家像我一样从命令学起,去了解它内部是怎样工作的。

Kubernetes 都有什么组件?

kubetl 命令行工具

1. 控制面板组件(搭建完成一定在的)

etcd
k8s 的数据库:键值类型存储的分布式数据库,提供了基于Raft算法实现自主的集群高可用服务,老版本:基于内存,新版本:持久化存储

kube-apiservice
接口服务:基于REST风格开放 k8s 接口的服务

kube-controller-manager
控制器管理器:管理各个类型的控制器,针对 k8s中的各种资源进行管理

cloud-controller-manager
云控制器管理器:第三方云提供的控制器API对接管理

kube-scheduler
调度器:负责讲 pod 基于一定算法,将服务调用到更合适的节点上(服务器)

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

2.节点组件(搭建完成一定在的)

kubelet
负责 Pod 生命周期、存储、网络

kube-proxy
网络代理:负责 service 的服务发现负载均衡(4层负载)

container runtime
容器运行时环境:docker、containerd、CRI-O

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

核心组件

命令行调用 api 操作 Pod

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

3.附加组件(可选组件)

kube-dns
负责为整个集群提供 DNS 服务

ingress Controller
为服务提供外部网络服务

prometheus
提供资源监控

Dashboard
可视化界面 UI

Federation
提供跨可用区的集群

Fluentd-elasticesarch
提供集群日志采集、存储与查阅

有状态应用和无状态应用

无状态应用比如 nginx 在扩容时只需要扩出来一个服务就好,没有任何影响。但是如果向 redis 这样的有状态应用扩容后储存在本地的数据并不会一起扩出来。因为 redis 扩容时需要做额外的数据处理操作,所以称为有状态。

转测试开发之 “测试开发右移拓宽知识Kubernetes” 学习

本作品采用《CC 协议》,转载必须注明作者和本文链接
保持好奇,求知若饥,终身编程
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!