Kubernetes 进阶实战

06/12/2020, 打算下半年把K8s CKA/CKAD 证书考了,要review一下这本书。

这是最近几周看的书(中文),年初从国内带过来的。

最近的项目涉及到很多微服务架构设计的问题,和组里大佬讨论的时候发现自己有的地方理解得不太正确甚至一张白纸,给不出一个完善的设计方案和想法,赶紧更新和归纳一下自己之前学到的知识点。

其实接触Kubernetes也快一年了,但一直是对之前项目的维护和更新操作,这次难得机会要集成一个新组件到已有的集群里,从头开始设计这些功能组件的各种配置,结构,生命周期,存储卷,依赖等。这本书算是一个由点到面的总结,提供了不少的帮助。

最近逐渐体会到一个好的,完善的,充分考虑的顶层设计是多么重要,否则每次设计改动对应到底层可能耗时耗力,甚至积重难返,不得不相互妥协。

这本书不打算做细致的笔记,但会记录一些以前没意识到或没见过的概念和工具。之后打算更细致的看一看<<Kubernetes in Action>>。我看最近O'REILLY出版了或即将出版很多关于Kubernetes的新书,其中比较吸引我的是patternbest practices, Operator以及一些cloud native devops相关的知识点,当然还包括一些重要系统组件和插件,比如SSL/TLS, CoreDNSetcd等。看来2019剩下的日子是真的会很忙了。

笔记

按照计划在2019年10月之前把这本书看完了第一遍,在书中做了不少标记和勾画,接下来快速记录一下其中的我比较注意的地方:


Kubernetes通过其附加组件之一的CoreDNS为系统内置了服务注册和服务发现功能,为每个Service配置了DNS名称,允许客户端通过此名称发出访问,并且Service通过kube-proxy creates iptabls or ipvs内建了负载均衡机制。Service本质上讲是一个四层代理服务,也可将外部流量引入集群内部。

网络存储系统,诸如:NFS, GlusterFS, Ceph, Cinder…目前项目里面其实用的是本地存储,只不过额外设置了NFS将本地存储连接了起来,并没有直接只用K8s中的NFS配置。

API Server是整个集群的网关。

etcd是由CoreOS基于raft协议开发的分布式键值存储,可用于服务发现,共享配置以及一致性保障,它是独立的服务组件,并不隶属于K8s。etcd中键值发生变化时会通知API Server,并通过watch API向客户端输出,实现高效协同。

K8s supports container runtime: Docker, cri-o, RKT, Fraki cri-o use gRPC(Remote procedure call)

K8s Dashborad Prometheus and it’s add-ons Ingress controller: 应用层负载均衡机制: Nginx, HAProxy…

Pod网络由网络插件实现(for example: fannel, calico, weave…), Service网络由K8s指定。


0%