Kubernetes网络基本的部署调度单元:Pod

Kubernetes中的基本管理单元并非是一个容器,而是一个叫做pod的东西。我们认为部署了一个或多个容器的环境是一个pod单元。通常情况下,它们代表了提供部分服务的单个功能端点。

举两个有效的pods单元为例:

  • 数据库pod — 一个单一MySQL容器
  • Web pod — 包含一个python实例的容器及包含Redis数据库的容器

pods具有以下常用的特性:

  • 它们共享资源 — 包括了网络栈和命名空间
  • pod包含了一个IP地址,用于客户端连接
  • pod的配置定义了任意公共端口以及哪个容器占用该端口
  • pod中的全部容器可以通过网络中的任意端口进行交互(这些容器都会被本地引用,因此需要确保pod中的服务都有唯一的端口)

Kubernetes服务(Kubernetes Services)

Kubernetes服务位于负载均衡器之后,负责管理多个相同的pods。客户端无需连接到每个pod的IP,而是直接连接负载均衡器的IP地址。Kubernetes服务会将你的应用程序定义为一个服务,使得Kubernetes可以根据定义的规则和实际可用资源动态扩展pod数量。

若想要应用程序被Kubernetes基础设施外部的客户端访问到,唯一的方法是将应用程序定义为服务的一部分。无论你是否扩展节点,都需要Kubernetes服务分配外部IP地址。

标签(Labels)

标签是Kubernetes中一组作用于对象(如pods)的键值对,需要具有实际意义且有相关性。

在Kubernetes的标准配置中,标签并不直接影响与Kubernetes相关的核心操作,而是主要用于对对象的分组和识别。

网络安全(Network Security)

下面我们将介绍一些Kubernetes推荐使用的网络插件,这些插件用到了我们上一节提到的标签。利用标签,它们可以在容器运行时改变某些功能。在Kubernetes中,大多数使用的网络插件都是基于容器网络接口(Container Networking Interface ,CNI)规范,这项规范由Cloud Native Computing Foundation(CNCF)制定。CNI允许在多个容器平台中使用相同的网络插件。现在我们使用一种调整网络安全策略的方法,该方法并不像传统的网络或者安全团队模型那样预先设置好一切,而是在容器运行时,利用标签来调整正确的网络策略(容器的动态变化太过频繁,很难进行手动干预),目前该方法已经成为了 Kubernetes Network Special Internet Group(Network SIG)的一部分。如今,我们已经有多个可供使用的网络插件能够将网络策略应用于命名空间和pods中,这其中包括OpenContrail 和 Project Calico。

通过这种新方法,Kubernetes管理员可以导入所有预先准备的策略,开发者负责调整并根据需求自主选择策略,而所有这一切都会定义到pod中执行。

网络策略示例:

POST /apis/net.alpha.kubernetes.io/v1alpha1/namespaces/tenant-a/networkpolicys/
{"kind": "NetworkPolicy","metadata": {"name": "pol1"},"spec": {"allowIncoming": {"from": [{ "pods": { "segment": "frontend" } }],"toPorts": [{ "port": 80, "protocol": "TCP" }]},"podSelector": { "segment": "backend" }}
}/apis/net.alpha.kubernetes.io/v1alpha1/namespaces/tenant-a/networkpolicys/
{"kind": "NetworkPolicy","metadata": {"name": "pol1"},"spec": {"allowIncoming": {"from": [{ "pods": { "segment": "frontend" } }],"toPorts": [{ "port": 80, "protocol": "TCP" }]},"podSelector": { "segment": "backend" }}
}

有网络策略定义的pod配置示例:

apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: nginxsegment: frontend
spec:containers:- name: nginximage: nginxports:- containerPort: 80: v1
kind: Pod
metadata:name: nginxlabels:app: nginxsegment: frontend
spec:containers:- name: nginximage: nginxports:- containerPort: 80

结论

有了Kubernetes提供的功能,开发者现在拥有了完全定义应用程序及其依赖性所需的灵活性,并且可以在单个pod中使用多个容器。如果任何一个容器发生错误,Kubernetes能够确保将其对应的pod停用,自动用新的pod替换。此外,开发者还可以定义应用程序或者服务侦听的端口号,无论它是较大服务的一部分,或仅仅是一个独立实例。通过这样的操作,使用持续交付和部署方法论的快速开发和部署周期将会成为常态。

应用开发者必须了解的Kubernetes网络二三事相关推荐

  1. 《戏说网络二三事》序1

    博主也是第一次写这种用故事讲述技术,写的可能..很难看..哪里写的不太好能一起讨论下嘛qq208820388,博主也在不断的反思自己,提高写作水平的,emmm 愿人生的路上,你我共勉~ 导语:文章合为 ...

  2. 云原生系列「二」Kubernetes网络详解

    前言 K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等,这么多概念足 ...

  3. 从零开始入门 K8s | Kubernetes 网络概念及策略控制

    作者 | 阿里巴巴高级技术专家 叶磊 一.Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法.大家知道 Kubernetes 对于网络具体实现方案,没有什么 ...

  4. 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)

    文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...

  5. Kubernetes网络一年发展动态与未来趋势

    Kubernetes网络模型 谈到Kubernetes的网络模型,就不能不提它著名的"单Pod单IP"模型,即每个Pod都有一个独立的IP,Pod内所有容器共享网络namespac ...

  6. 盘点Kubernetes网络问题的4种解决方案

    由于在企业中部署私有云的场景会更普遍,所以在私有云中运行Kubernetes + Docker集群之前,就需要自己搭建符合Kubernetes要求的网络环境.现在的开源世界里,有很多开源组件可以帮助我 ...

  7. Kube-OVN:基于OVN的开源Kubernetes网络实践

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 今天,许多企业开始运行Kubernet ...

  8. 北航、商汤提出的网络二值化新算法 IR-Net,到底好使不?

    [CSDN编者按]在CVPR 2020上,商汤研究院链接与编译组和北京航空航天大学刘祥龙老师团队提出了一种旨在优化前后向传播中信息流的实用.高效的网络二值化新算法IR-Net.不同于以往二值神经网络大 ...

  9. kubernetes 网络

    目录 一.Kubernetes 网络模型 1.Kubernetes的网络模型设计目标 2.容器间通信 3.Pod间通信 1.Pod间通信 2.Pod间通信示意图 4.Service 与 Pod间的通信 ...

最新文章

  1. 手把手教你如何进行FileZilla的安装
  2. 执行phpize Cannot find config.m4
  3. 常用数据库的Jdbc连接代码
  4. 荷兰牛栏 荷兰售价_荷兰研究小组授予的数据共享项目
  5. apache http server 停止工作_宝塔apache启动失败:报错 AH00526: Syntax error on line 解决方案...
  6. 地图比例尺与空间分辨率之间的关系_卫星遥感制图最佳影像空间分辨率与地图比例尺关系探讨.doc...
  7. 智能网联汽车仿真测试软件,智能网联汽车测试评价及检测认证
  8. SMAIL 语法大全(Dalvik 虚拟机操作码)
  9. 小米5如何进入开发者模式
  10. matlab里怎么做能带结构图,用matlab画出石墨烯的能带关系图Homewo.PDF
  11. 公众号推送长图最佳尺寸_微信公众平台图片尺寸是多少
  12. 小米4c一直显示无服务器,小米路由器4C不能上网(连不上网)怎么办?
  13. virtualbox vbox虚拟机去虚拟化软件使用教程 硬件级虚拟机系统 超能版 V2020
  14. 手机ROM,RAM作假显示
  15. html 表格选择滚动条,table设置tbody滚动条
  16. 离散数学——coq学习笔记(一)
  17. kali linux学习手册,Kali Linux学习手册
  18. 计算机网络时代纪录片,中国首部自媒体纪录片《生机》揭秘新世相
  19. steamvr2.0 vr模式下,多相机共存
  20. upload-labs靶场通关指南(16-17关)

热门文章

  1. 一友人昨夜接到电话,发生何事
  2. 概率整形 Peobabilistic Shaping PS
  3. H265的国标PS流打包
  4. 值得推荐的C/C++框架和库(转载)
  5. Ubuntu/Deepin--How to remove packeges?
  6. QT多界面之间数据传输
  7. php enable all,php中的enable_dl配置如何有用?
  8. 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...
  9. win7分区c盘调整容量_如何扩大C盘空间 增加C盘容量方法有哪些【详细介绍】
  10. lcd timing 先关参数