容器网络7:从外部访问Service 在前面的文章中,我们讨论了Kubernetes内部的Pod之间如何互相访问。接下来,我们重点讨论如何从外部访问Kubernetes内部的Pod。 一、NodePort 通过前面的讲解,我们应该能够明白这样一个事实:Service 的访问信息在 Kubernetes 集群之外,其实是无效的。这其实也容易理解:所谓 Service 的访问入口,其实就是每台宿主机上由 kube-proxy 生成的 ip 2020-10-07 容器 #Kubernetes
容器网络6:Service、DNS与服务发现 在前面的文章中,我们讨论了kubernetes的“连通性”和“隔离性”。接下来,我们重点讨论一下一个Pod是如何被访问到的? 一、理解Service ClusterIP模式 Kubernetes 之所以需要 Service 对象,一方面是因为 Pod 的 IP 不是固定的,另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求。 1.1、创建Service 一个最典型的 Service 定义, 2020-10-07 容器 #Kubernetes
容器网络5:NetworkPolicy 在前面的文章中,我们讨论了Kubernetes的网络“连通性”。接下来,我们重点讨论Kubernetes网络的“隔离性”。 一、NetworkPolicy对象 1.1、什么是NetworkPolicy 在 Kubernetes 中,对网络隔离能力的定义,是依靠一种专门的 API 对象来描述的,即:NetworkPolicy。 Kubernetes 里的 Pod 默认都是“允许所有”(Accept 2020-10-07 容器 #Kubernetes
容器网络4:解读Kubernetes三层网络方案 在前面的文章中,我们讨论了Flannel UDP模式和Flannel VXLAN模式这两种“隧道”网络解决方案。接下来,我们重点讨论Flannel host-gw模式和Calico这两种纯三层网络解决方案。 一、Flannel host-gw模式 Flannel host-gw 模式的工作原理非常简单,我们用一张图就可以说清楚。为了方便叙述,接下来我们会称这张图为“host-gw 示意图”。 现 2020-10-06 容器 #Kubernetes
容器网络3:Kubernetes网络模型与CNI网络插件 在前面的文章中,我们讨论了容器间的网络通信原理。接下来,我们一起看一看Kubernetes的网络通信原理。 一、从CNI网桥说起 我们知道,Flannel UDP 模式和Flannel VXLAN模式有一个共性,那就是用户的容器都连接在 docker0 网桥上。而Flannel网络插件则会在宿主机上创建了一个特殊的设备(UDP 模式创建的是 TUN 设备,VXLAN 模式创建的则是 VTEP 设备 2020-10-06 容器 #Kubernetes
容器网络2:深入解析容器跨主机网络 在前面的文章中,我们讨论了单机容器间通信的原理,并引出了“跨主机容器间通信问题”。接下来,我们重点讨论跨主机容器间通信的原理。 一、从Flannel项目说起 要理解容器“跨主机通信”的原理,就一定要先从 Flannel 这个项目说起。Flannel 项目是 CoreOS 公司主推的容器网络方案。事实上,Flannel 项目本身只是一个框架,真正为我们提供容器网络功能的,是 Flannel 的后端实 2020-10-06 容器 #Kubernetes
容器网络1:浅谈容器网络 在前面的文章中,我们讨论了数据持久化方面的内容。接下来,我们重点讨论与容器网络相关的内容。 一、从单机容器间如何通信说起 首先,我们需要知道的是,一个 Linux 容器能看见的“网络栈”,实际上是被隔离在它自己的 Network Namespace 当中的。而这里所谓的“网络栈”,就包括了:网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routin 2020-10-06 容器 #Kubernetes
存储管理6:Projected Volume 在 Kubernetes 中,有几种特殊的 Volume,它们存在的意义不是为了存放容器里的数据,也不是用来进行容器和宿主机之间的数据交换。而是为容器提供预先定义好的数据。从容器的角度来看,这些 Volume 中的信息仿佛是被 Kubernetes“投射”(Project)到容器当中的。这正是 Projected Volume 的含义。到目前为止,Kubernetes 支持的 Projected 2020-10-05 容器 #Kubernetes
存储管理5:实践Local PV 在开始使用 Local Persistent Volume 之前,我们首先需要在集群里配置好磁盘或者块设备。在公有云上,这个操作等同于给虚拟机额外挂载一个磁盘,比如 GCE 的 Local SSD 类型的磁盘就是一个典型例子。而在我们部署的私有环境中,有两种办法来完成这个步骤。 第一种,当然就是给宿主机挂载并格式化一个可用的本地磁盘,这也是最常规的操作; 第二种,对于实验环境,你其实可以在 2020-10-05 容器 #Kubernetes
存储管理4:理解Local PV 在前面的文章中,我们都是基于一个外部的存储服务来提供PV。此时,我们可能有这样的疑问:能否直接使用宿主机上的目录或磁盘作为PV呢?答案是肯定的。这就是我们今天就要讨论的主题:Local Persistent Volume。 1.1、什么是Local PV Kubernetes 支持直接使用宿主机上目录或磁盘,而不依赖于远程存储服务来提供“持久化”的 Volume。这样做的好处显而易见:由于这个 V 2020-10-05 容器 #Kubernetes