# Kubernetes 文档 / 概念 / 服务、负载均衡和联网 / IPv4/IPv6 双协议栈

news2024/7/6 18:48:50

Kubernetes 文档 / 概念 / 服务、负载均衡和联网 / IPv4/IPv6 双协议栈

此文档从 Kubernetes 官网摘录
中文地址
英文地址

1. 支持的功能

Kubernetes 集群的 IPv4/IPv6 双协议栈可提供下面的功能:

  • 双协议栈 Pod 网络(每个 Pod 分配一个 IPv4 和 IPv6 地址)
  • IPv4 和 IPv6 启用的 Service
  • Pod 的集群外出口通过 IPv4 和 IPv6 路由

2. 先决条件

为了使用 IPv4/IPv6 双栈的 Kubernetes 集群,需要满足以下先决条件:

  • Kubernetes 1.20 版本或更高版本,有关更早 Kubernetes 版本的使用双栈 Service 的信息, 请参考对应版本的 Kubernetes 文档。
  • 提供商支持双协议栈网络(云提供商或其他提供商必须能够为 Kubernetes 节点提供可路由的 IPv4/IPv6 网络接口)。
  • 支持双协议栈的网络插件。

3. 配置 IPv4/IPv6 双协议栈

如果配置 IPv4/IPv6 双栈,请分配双栈集群网络:

  • kube-apiserver:
    • –service-cluster-ip-range=,
  • kube-controller-manager:
    • –cluster-cidr=,
    • –service-cluster-ip-range=,
    • –node-cidr-mask-size-ipv4|–node-cidr-mask-size-ipv6 对于 IPv4 默认为 /24, 对于 IPv6 默认为 /64
  • kube-proxy:
    • –cluster-cidr=,
  • kubelet:
    • –node-ip=,

4. Service

你可以使用 IPv4 或 IPv6 地址来创建 Service。

Service 的地址族默认为第一个服务集群 IP 范围的地址族(通过 kube-apiserver 的 --service-cluster-ip-range 参数配置)。

当你定义 Service 时,可以选择将其配置为双栈。若要指定所需的行为,你可以设置 .spec.ipFamilyPolicy 字段为以下值之一:

  • SingleStack:单栈 Service。控制面使用第一个配置的服务集群 IP 范围为 Service 分配集群 IP。

  • PreferDualStack:启用双栈时,为 Service 同时分配 IPv4 和 IPv6 集群 IP 地址。 如果双栈未被启用或不被支持,则会返回到单栈行为。

  • RequireDualStack:启用双栈时,同时从 IPv4 和 IPv6 的地址范围中分配 Service 的 .spec.ClusterIPs。 如果双栈未被启用或不被支持,则 Service API 对象创建失败。

    • 从基于在 .spec.ipFamilies 数组中第一个元素的地址族的 .spec.ClusterIPs 列表中选择 .spec.ClusterIP

    说明:
    .spec.ipFamilies 字段修改是有条件的:你可以添加或删除第二个 IP 地址族, 但你不能更改现有 Service 的主要 IP 地址族。

你可以设置 .spec.ipFamily 为以下任何数组值:

  • [“IPv4”]
  • [“IPv6”]
  • [“IPv4”,“IPv6”] (双栈)
  • [“IPv6”,“IPv4”] (双栈)

你所列出的第一个地址族用于原来的 .spec.ClusterIP 字段。

4.1 双栈 Service 配置场景

4.1.1 新 Service 的双栈选项
  1. 此 Service 规约中没有显式设定 .spec.ipFamilyPolicy。当你创建此 Service 时,Kubernetes 从所配置的第一个 service-cluster-ip-range 中为 Service 分配一个集群 IP,并设置 .spec.ipFamilyPolicy 为 SingleStack。

  2. 此 Service 规约显式地将 .spec.ipFamilyPolicy 设置为 PreferDualStack。 当你在双栈集群上创建此 Service 时,Kubernetes 会为此 Service 分配 IPv4 和 IPv6 地址。 控制平面更新 Service 的 .spec 以记录 IP 地址分配。 字段 .spec.ClusterIPs 是主要字段,包含两个分配的 IP 地址;.spec.ClusterIP 是次要字段, 其取值从 .spec.ClusterIPs 计算而来。

  • 对于 .spec.ClusterIP 字段,控制面记录来自第一个服务集群 IP 范围对应的地址族的 IP 地址。
  • 对于单协议栈的集群,.spec.ClusterIPs 和 .spec.ClusterIP 字段都 仅仅列出一个地址。
  • 对于启用了双协议栈的集群,将 .spec.ipFamilyPolicy 设置为 RequireDualStack 时,其行为与 PreferDualStack 相同。
  1. 下面的 Service 规约显式地在 .spec.ipFamilies 中指定 IPv6 和 IPv4,并将 .spec.ipFamilyPolicy 设定为 PreferDualStack。 当 Kubernetes 为 .spec.ClusterIPs 分配一个 IPv6 和一个 IPv4 地址时, .spec.ClusterIP 被设置成 IPv6 地址,因为它是 .spec.ClusterIPs 数组中的第一个元素, 覆盖其默认值。
4.1.2 现有 Service 的双栈默认值

下面示例演示了在 Service 已经存在的集群上新启用双栈时的默认行为。 (将现有集群升级到 1.21 或者更高版本会启用双协议栈支持。)

  1. 在集群上启用双栈时,控制面会将现有 Service(无论是 IPv4 还是 IPv6)配置 .spec.ipFamilyPolicy 为 SingleStack 并设置 .spec.ipFamilies 为 Service 的当前地址族。
    dual-stack-default-svc.yaml.
apiVersion: v1
kind: Service
metadata:
  name: my-service
  labels:
    app.kubernetes.io/name: MyApp
spec:
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    - protocol: TCP
      port: 80
  1. 在集群上启用双栈时,带有选择算符的现有 无头服务 由控制面设置 .spec.ipFamilyPolicy 为 SingleStack 并设置 .spec.ipFamilies 为第一个服务集群 IP 范围的地址族(通过配置 kube-apiserver 的 --service-cluster-ip-range 参数),即使 .spec.ClusterIP 的设置值为 None 也如此。
4.1.3 在单栈和双栈之间切换 Service

Service 可以从单栈更改为双栈,也可以从双栈更改为单栈。

  1. 要将 Service 从单栈更改为双栈,根据需要将 .spec.ipFamilyPolicy 从 SingleStack 改为 PreferDualStack 或 RequireDualStack。 当你将此 Service 从单栈更改为双栈时,Kubernetes 将分配缺失的地址族, 以便现在此 Service具有 IPv4 和 IPv6 地址。 编辑 Service 规约将 .spec.ipFamilyPolicy 从 SingleStack 改为 PreferDualStack。

  2. 要将 Service 从双栈更改为单栈,请将 .spec.ipFamilyPolicy 从 PreferDualStack 或 RequireDualStack 改为 SingleStack。 当你将此 Service 从双栈更改为单栈时,Kubernetes 只保留 .spec.ClusterIPs 数组中的第一个元素,并设置 .spec.ClusterIP 为那个 IP 地址, 并设置 .spec.ipFamilies 为 .spec.ClusterIPs 地址族。

4.2 无选择算符的无头服务

对于不带选择算符的无头服务, 若没有显式设置 .spec.ipFamilyPolicy,则 .spec.ipFamilyPolicy 字段默认设置为 RequireDualStack。

4.3 LoadBalancer 类型 Service

要为你的 Service 提供双栈负载均衡器:

  • 将 .spec.type 字段设置为 LoadBalancer
  • 将 .spec.ipFamilyPolicy 字段设置为 PreferDualStack 或者 RequireDualStack
    说明:
    为了使用双栈的负载均衡器类型 Service,你的云驱动必须支持 IPv4 和 IPv6 的负载均衡器

5. 出站流量

如果你要启用出站流量,以便使用非公开路由 IPv6 地址的 Pod 到达集群外地址 (例如公网),则需要通过透明代理或 IP 伪装等机制使 Pod 使用公共路由的 IPv6 地址。 ip-masq-agent项目 支持在双栈集群上进行 IP 伪装。

6. Windows 支持

Windows 上的 Kubernetes 不支持单栈“仅 IPv6” 网络。 然而, 对于 Pod 和节点而言,仅支持单栈形式 Service 的双栈 IPv4/IPv6 网络是被支持的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAMA学习笔记(一)-数据管理

1.引言 数据管理(Data Management) 是为了 交付、 控制、 保护 并 提升 数据和信息资产的 价值 , 在其整个生命周期中制订 计划、 制度、 规程和实践 活动, 并 执行 和 监督 的过程。 数据管理专业人员(Data Management Professional) 是指 从事数据管理各方面的工作…

基于python-CNN深度学习的食物识别-含数据集+pyqt界面

代码下载地址: https://download.csdn.net/download/qq_34904125/89374855 本代码是基于python pytorch环境安装的。 下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。 或可直接参考下面博文…

【微信小程序开发(从零到一)】——个人中心页面的实战项目(二)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【十大排序算法】归并排序

归并排序,如同秋日落叶,分散而细碎, 然而风吹叶动,自然而有序, 彼此相遇,轻轻合拢, 最终成就,秩序之谧。 文章目录 一、归并排序二、发展历史三、处理流程四、算法实现五、算法特性…

CPP初级:模板的运用!

目录 一.泛型编程 二.函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的匹配原则 四.类模板 1.类模板的定义格式 2.类模板的实例化 一.泛型编程 泛型编程:编写与类型无关的通用代码…

Xcode 安装17.5 simulator 总是失败

升级到xcode15.4后需要安装ios17.5模拟器 但是在下载过程中会遇到报错 : The network connection is lost 解决方案: 先将模拟器下载到本地 Xcode 安装17.5 simulator 下载地址: Sign In - Applhttps://developer.apple.com/download/all/?qXcode 下…

【系统架构】架构演进

系列文章目录 第一章 系统架构的演进 本篇文章目录 系列文章目录前言一、原始分布式二、单体系统时代三、SOA时代烟囱架构微内核架构事件驱动架构 四、微服务架构五、后微服务时代六、无服务时代总结 前言 最近笔者一直在学习系统架构的相关知识,对系统架构的演进…

web前端:作业二

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 1.将ul的子l…

《web应用技术》第11次课后作业

课后练习&#xff1a; 1、验证过滤器进行权限验证的原理。 2、将自己之前的项目&#xff0c;加上过滤器验证功能。参考以下文章&#xff1a; 采用JWT令牌和Filter进行登录拦截认证-CSDN博客 3、Apifox的使用 了解Apifox的工具特点和使用方法&#xff0c;使用Apifox辅助生成…

【机器学习】决策树模型(个人笔记)

文章目录 多样性指标基尼杂质指数&#xff08;Gini Impurity Index&#xff09;熵&#xff08;Entropy&#xff09; 决策树的应用 源代码文件请点击此处&#xff01; 多样性指标 基尼杂质指数&#xff08;Gini Impurity Index&#xff09; 若集合中包含 m m m 个元素和 n …

C++类与对象(拷贝与类的内存管理)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 文章目录 前言一.对象的动态建立和释放二.多个对象的构造和析构三.深拷贝与浅拷贝四.C类的内存管理总结 前言 …

数据仓库核心:事实表深度解析与设计指南

文章目录 1. 引言1.1基本概念1.2 事实表定义 2. 设计原则2.1 原则一&#xff1a;全面覆盖业务相关事实2.2 原则二&#xff1a;精选与业务过程紧密相关的事实2.3 原则三&#xff1a;拆分不可加事实为可加度量2.4 原则四&#xff1a;明确声明事实表的粒度2.5 原则五&#xff1a;避…

如何有效防御.360勒索病毒:.360勒索病毒加密文件预防方法探讨

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题也日益凸显。其中&#xff0c;勒索病毒作为一种新型的网络安全威胁&#xff0c;给用户和企业带来了极大的困扰和损失。特别是.360勒索病毒&#xff0c;以其独特的加密方式和恶劣的勒索手段&#xff0c;引起了…

AtCoder Beginner Contest 356 G. Freestyle(凸包+二分)

题目 思路来源 quality代码 题解 对n个泳姿点(ai,bi)建凸包&#xff0c;实际上是一个上凸壳&#xff0c; 对于询问(ci,di)来说&#xff0c;抽象画一下这个图&#xff0c;箭头方向表示询问向量 按x轴排增序&#xff0c;并且使得后面的y不小于前面的y&#xff0c;因为总可以多…

Docker高级篇之Docker-compose容器编排

文章目录 1. Docker-compse介绍2. Docker-compse下载3. Docker-compse核心概念4. Docker-compse使用案例 1. Docker-compse介绍 Docker-compose时Docker官方的一个开源的项目&#xff0c;负责对Docker容器集群的快速编排。Docker-compose可以管理多个Docker容器组成一个应用&a…

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇9基于stm32的酒窖监测系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 -------------------…

Docker高级篇之轻量化可视化工具Portainer

文章目录 1. 简介2. Portainer安装 1. 简介 Portianer是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便管理Docker环境&#xff0c;包括单机环境和集成环境。 2. Portainer安装 官网&#xff1a;https://www.portainer.io 这里我们使用docker命令安装&…

8.让画面动起来

一、Unity Shader中的内置变量&#xff08;时间篇&#xff09; 动画效果往往都是把时间添加到一些变量的计算中&#xff0c;以便在时间变化的同时也可以随之变化。Unity shader提供了一系列关于时间的内置变量来允许我们方便地在Shader中访问运行时间&#xff0c;实现各种动画…

STM32 | 独立看门狗 | RTC(实时时钟)

01、独立看门狗概述 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状…

Elasticsearch:Open Crawler 发布技术预览版

作者&#xff1a;来自 Elastic Navarone Feekery 多年来&#xff0c;Elastic 已经经历了几次 Crawler 迭代。最初是 Swiftype 的 Site Search&#xff0c;后来发展成为 App Search Crawler&#xff0c;最近又发展成为 Elastic Crawler。这些 Crawler 功能丰富&#xff0c;允许以…