测试开发右移 — Kubernetes 初识,组件和应用
如果不懂容器概念,或者不懂Docker的建议先去学习这两个东西。
什么是 Kubernetes ?
Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes目的是让部署容器的应用简单并且高效(powerful),Kubernetes 提供了应用部署、规划、更新、维护的一种机制。
传统部署和虚拟化部署的痛点

容器化部署痛点
容器删除ip改变,不稳定

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



我们操作的命令行是什么?
我们通过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 基于一定算法,将服务调用到更合适的节点上(服务器)

2.节点组件(搭建完成一定在的)
kubelet
负责 Pod 生命周期、存储、网络
kube-proxy
网络代理:负责 service 的服务发现负载均衡(4层负载)
container runtime
容器运行时环境:docker、containerd、CRI-O

核心组件
命令行调用 api 操作 Pod

3.附加组件(可选组件)
kube-dns
负责为整个集群提供 DNS 服务
ingress Controller
为服务提供外部网络服务
prometheus
提供资源监控
Dashboard
可视化界面 UI
Federation
提供跨可用区的集群
Fluentd-elasticesarch
提供集群日志采集、存储与查阅
有状态应用和无状态应用
无状态应用比如 nginx 在扩容时只需要扩出来一个服务就好,没有任何影响。但是如果向 redis 这样的有状态应用扩容后储存在本地的数据并不会一起扩出来。因为 redis 扩容时需要做额外的数据处理操作,所以称为有状态。

本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu