Skip to the content.

K8S

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

容器编排的优缺点

  1. 部署方便 (集群管理,环境统一)
  2. 部署安全 (环境统一)
  3. 隔离性好 (隔离宿主机的不同)
  4. 快速回滚 (基于镜像版本的回滚)
  5. 成本低 (相对于虚拟机有更少的资源消耗)
  6. 管理成本更低 (较低的维护成本管理大量的容器集群)

容器部署和主机部署的区别

参考优缺点+主机与容器的比较。

主要讲 速度、效率、可靠性

[3] K8S 常用组件, 结构

参考文章

组件

master node: 是整个系统的指挥官

worker node: 干活的小兵

均有使用的组件

主要操作对象

一个请求到达 pod 过程/configmap/dockerfile

k8s 内部请求到达外部的过程

etcd mvcc

基于数据库事务实现的乐观锁,在读取时,会读取当前事务ID下对应的值,这样可以避免写操作与读操作产生的锁操作影响性能。

内存中的 key->treeIndex->keyIndex 使用 btree 加速索引, keyIndex 对应 boltDB 中的 key/value 对

k8s pod 之间如何通信

由于是共享网络空间的, 所以可以直接使用 localhost:port 来通信

  1. 在同一台主机上

?

  1. 在不同主机上

通过 DNS 解析,访问 service name 即可访问到对应服务。

k8s 集群网络

Pod 创建过程

通过 ETCD 来储存 Kubectl 的请求。 各个组件通过访问 ApiServer 来获取请求。 ApiServer 通过 watch ETCD 的方式来缓存 ETCD 数据。