kubernetes整体架构和配置介绍

本周我们正式开始了kubernetes的系列讲座,感谢Shihao给我们带来的第一讲,相关内容总结如下:

Slides

  1. Shihao使用的Slides.
  2. kubernetes系列讲座总结:

Q&A

感谢Richard帮忙做得笔记整理和Nancy以及Jia提供的笔记供参考。

每个container只能有一个process?

  1. 总的来说,每个container只能有一个主进程。
  2. 在container内部,首先启动的进程就是1号进程,也就是主进程(上面的拓展链接有图)。群友分享了一个有趣的例子。如果我们采用bash shell 来启动一个tomcat。那么bash 本身将会成为1号进程,这显然不是我们所希望的。所以我们需要exec command来替换掉进称号。【拓展】exec
  3. 【扩展】容器基础(一)、从进程开始:这个博客的系列文章很值得参考,应该算是深入浅出讲解了相关概念。
  4. 【扩展】Docker 基础技术之 Linux namespace 详解:很不错的介绍namespace的介绍。
  5. 【扩展】10分钟看懂Docker和K8S:这篇文章从历史入手一步一步结合,不错的参考。

关于container/pod/OS(node)/cluster中的端口号(port)是如何映射和使用的

  1. 这里同样用到了namespace的功能,只不过是network namespace. 在k8s中,同一个pod会share同一个network namespace。network namespace提供了一种port mapping的手段,就如同Q1中pid的映射。pod内部的port和真实OS的port并不一定1:1对应。比如有两个配置完全相同的POD,其中的app都暴露了80端口。但可能在OS视角中,一个mapping到真实port的1800,一个到了2800。其中运用了Container Networking Interface(CNI)的技术。
  2. 【扩展】An Introduction Into Kubernetes Networking:这个系列文章,还是值得一看的。
  3. 【扩展】【Kubernetes系列】第9篇 网络原理解析(上篇):动态显示得很清楚。
  4. 【扩展】k8s 辨析 port、NodePort、targetPort、containerPort 区别:关于各个port的整理。
  5. 【扩展】深入浅出Kubernetes网络:容器网络初探:更偏向于实践的介绍。

明白了端口怎么映射,那么各个级别的IP又是怎么映射的呢?

  1. 既然是所谓的cloud native管理工具,那么对于用户来说,他面对的是cluster本身,而不需考虑内部如何实现。所以第一个ip就是service ip,也可以说成是cluster ip。
  2. 这里需要了解一个context,proxy和virtual ip。service ip就是一个vip。为什么?因为我们可以很清楚的认识到,这个ip地址并不是一个真实地址,而是对应着背后千千万万个pod的地址。所以在service中会维护了一个路由表,用来mapping不同的pod。
  3. Pod ip通常是关联到node ip的。但值得注意的是,pod本身是动态变化的,在pod启动后要将ip主动上报,需要是因为k8s里面的重启后ip会改变。实现可以两种:
    • 静态: env variable
    • 动态:
      • ConfigMap。映射到本身的文件系统 (定义重新加载,可以有一个进程做这个事情)
      • DNS:把ip地址namespace上报。
  4. 【扩展】DNS for Services and Pods

Pod中container的数量有要求吗?

  1. 一般没有要求,一般来说一个pod由一个主服务container和N个Sidecar container(logging, metrics agent)组成
  2. 【扩展】为 Pod 和容器管理资源:各种资源的限制都讲得很清楚。
  3. 【扩展】k8s pod container node cluster 之间的关系:应该是一个视频的笔记,但还是可以看看。

EmptyDir的使用场景

  1. 可以用来在同一个pod,不同container中共文件,保存一些不需要persist的敏感信息。
  2. 【扩展】Kubernetes中的emptyDir存储卷和节点存储卷:对EmptyDir的详细介绍
  3. 【扩展】k8s-存储卷类型-emptyDir-hostPath-网络存储-NFS-持久卷PV(静态动态):这篇文章的介绍很详细。
  4. 【扩展】Kubernetes 存储设计:存储的设计,介绍很详细。
  5. 【扩展】云原生存储详解:容器存储与 K8s 存储卷

再次感谢大家的参与,也希望大家有好的资源能联系我更新这篇文章。谢谢大家。

下周话题安排和往期话题回顾敬请参见《系统设计开荒小分队话题讨论简介

You may also like...

4 Responses

  1. May 4, 2022

    […] 第一讲:kubernetes整体架构和配置介绍 […]

  2. May 9, 2022

    […] 第一讲:kubernetes整体架构和配置介绍 […]

  3. May 15, 2022

    […] 第一讲:kubernetes整体架构和配置介绍 […]

  4. May 22, 2022

    […] 第一讲:kubernetes整体架构和配置介绍 […]

Leave a Reply

Your email address will not be published.