Kubernetes 使用kubeadm支持雙協(xié)議棧

2022-06-01 09:02 更新

使用 kubeadm 支持雙協(xié)議棧

FEATURE STATE: Kubernetes v1.23 [stable]

你的集群包含雙協(xié)議棧組網(wǎng)支持, 這意味著集群網(wǎng)絡(luò)允許你在兩種地址族間任選其一。在集群中,控制面可以為同一個(gè) Pod 或者 Service 同時(shí)賦予 IPv4 和 IPv6 地址。

在開始之前

你需要已經(jīng)遵從安裝 kubeadm 中所給的步驟安裝了 kubeadm 工具。

針對(duì)你要作為節(jié)點(diǎn)使用的每臺(tái)服務(wù)器, 確保其允許 IPv6 轉(zhuǎn)發(fā)。在 Linux 節(jié)點(diǎn)上,你可以通過以 root 用戶在每臺(tái)服務(wù)器上運(yùn)行 ?sysctl -w net.ipv6.conf.all.forwarding=1? 來(lái)完成設(shè)置。

你需要一個(gè)可以使用的 IPv4 和 IPv6 地址范圍。集群操作人員通常為 IPv4 使用 私有地址范圍。對(duì)于 IPv6,集群操作人員通常會(huì)基于分配給該操作人員的地址范圍, 從 ?2000::/3? 中選擇一個(gè)全局的單播地址塊。你不需要將集群的 IP 地址范圍路由 到公眾互聯(lián)網(wǎng)。

Note:
如果你在使用 ?kubeadm upgrade? 命令升級(jí)現(xiàn)有的集群,?kubeadm ?不允許更改 Pod 的 IP 地址范圍(“集群 CIDR”),也不允許更改集群的服務(wù)地址范圍(“Service CIDR”)。

創(chuàng)建雙協(xié)議棧集群 

要使用 ?kubeadm init? 創(chuàng)建一個(gè)雙協(xié)議棧集群,你可以傳遞與下面的例子類似的命令行參數(shù):

# 這里的地址范圍僅作示例使用
kubeadm init --pod-network-cidr=10.244.0.0/16,2001:db8:42:0::/56 --service-cidr=10.96.0.0/16,2001:db8:42:1::/112

為了更便于理解,參看下面的名為 ?kubeadm-config.yaml? 的 kubeadm 配置文件, 該文件用于雙協(xié)議??刂泼娴闹骺刂乒?jié)點(diǎn)。

---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
  podSubnet: 10.244.0.0/16,2001:db8:42:0::/56
  serviceSubnet: 10.96.0.0/16,2001:db8:42:1::/112
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: "10.100.0.1"
  bindPort: 6443
nodeRegistration:
  kubeletExtraArgs:
    node-ip: 10.100.0.2,fd00:1:2:3::2

InitConfiguration 中的 ?advertiseAddress ?給出 API 服務(wù)器將公告自身要監(jiān)聽的 IP 地址。?advertiseAddress ?的取值與 ?kubeadm init? 的標(biāo)志 ?--apiserver-advertise-address? 的取值相同。

運(yùn)行 kubeadm 來(lái)實(shí)例化雙協(xié)議??刂泼婀?jié)點(diǎn):

kubeadm init --config=kubeadm-config.yaml

kube-controller-manager 標(biāo)志 ?--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6? 是使用默認(rèn)值來(lái)設(shè)置的。

Note:
標(biāo)志 ?--apiserver-advertise-address? 不支持雙協(xié)議棧。

向雙協(xié)議棧集群添加節(jié)點(diǎn) 

在添加節(jié)點(diǎn)之前,請(qǐng)確保該節(jié)點(diǎn)具有 IPv6 可路由的網(wǎng)絡(luò)接口并且啟用了 IPv6 轉(zhuǎn)發(fā)。

下面的名為 ?kubeadm-config.yaml? 的 kubeadm 配置文件 示例用于向集群中添加工作節(jié)點(diǎn)。

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: 10.100.0.1:6443
    token: "clvldh.vjjwg16ucnhp94qr"
    caCertHashes:
    - "sha256:a4863cde706cfc580a439f842cc65d5ef112b7b2be31628513a9881cf0d9fe0e"
    # 請(qǐng)更改上面的認(rèn)證信息,使之與你的集群中實(shí)際使用的令牌和 CA 證書匹配
nodeRegistration:
  kubeletExtraArgs:
    node-ip: 10.100.0.3,fd00:1:2:3::3

下面的名為 ?kubeadm-config.yaml? 的 kubeadm 配置文件 示例用于向集群中添加另一個(gè)控制面節(jié)點(diǎn)。

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
controlPlane:
  localAPIEndpoint:
    advertiseAddress: "10.100.0.2"
    bindPort: 6443
discovery:
  bootstrapToken:
    apiServerEndpoint: 10.100.0.1:6443
    token: "clvldh.vjjwg16ucnhp94qr"
    caCertHashes:
    - "sha256:a4863cde706cfc580a439f842cc65d5ef112b7b2be31628513a9881cf0d9fe0e"
    # 請(qǐng)更改上面的認(rèn)證信息,使之與你的集群中實(shí)際使用的令牌和 CA 證書匹配
nodeRegistration:
  kubeletExtraArgs:
    node-ip: 10.100.0.4,fd00:1:2:3::4

JoinConfiguration.controlPlane 中的 ?advertiseAddress ?設(shè)定 API 服務(wù)器將公告自身要監(jiān)聽的 IP 地址。?advertiseAddress ?的取值與 ?kubeadm join? 的標(biāo)志 ?--apiserver-advertise-address? 的取值相同。

kubeadm join --config=kubeadm-config.yaml

創(chuàng)建單協(xié)議棧集群 

Note:
雙協(xié)議棧支持并不意味著你需要使用雙協(xié)議棧來(lái)尋址。 你可以部署一個(gè)啟用了雙協(xié)議棧聯(lián)網(wǎng)特性的單協(xié)議棧集群。

為了更便于理解,參看下面的名為 ?kubeadm-config.yaml? 的 kubeadm 配置文件示例, 該文件用于單協(xié)議??刂泼婀?jié)點(diǎn)。

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/16


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)