|
| 1 | +--- |
| 2 | +title: kubeadmによるデュアルスタックのサポート |
| 3 | +content_type: task |
| 4 | +weight: 100 |
| 5 | +min-kubernetes-server-version: 1.21 |
| 6 | +--- |
| 7 | + |
| 8 | +<!-- overview --> |
| 9 | + |
| 10 | +{{< feature-state for_k8s_version="v1.23" state="stable" >}} |
| 11 | + |
| 12 | +Kubernetesクラスターには[デュアルスタック](/ja/docs/concepts/services-networking/dual-stack/)ネットワークが含まれています。つまりクラスターネットワークではいずれかのアドレスファミリーを使用することができます。 |
| 13 | +クラスターでは、コントロールプレーンはIPv4アドレスとIPv6アドレスの両方を、単一の{{< glossary_tooltip text="Pod" term_id="pod" >}}または{{< glossary_tooltip text="Service" term_id="service" >}}に割り当てることができます。 |
| 14 | + |
| 15 | +<!-- body --> |
| 16 | + |
| 17 | +## {{% heading "prerequisites" %}} |
| 18 | + |
| 19 | +[kubeadmのインストール](/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/)の手順に従って、{{< glossary_tooltip text="kubeadm" term_id="kubeadm">}}ツールをインストールしておく必要があります。 |
| 20 | + |
| 21 | +{{< glossary_tooltip text="ノード" term_id="node">}}として使用したいサーバーごとに、IPv6フォワーディングが許可されていることを確認してください。 |
| 22 | +Linuxでは、各サーバーでrootユーザーとして`sysctl -w net.ipv6.conf.all.forwarding=1`を実行することで設定できます。 |
| 23 | + |
| 24 | +使用するにはIPv4およびIPv6アドレス範囲が必要です。 |
| 25 | +クラスター運用者は、通常はIPv4にはプライベートアドレス範囲を使用します。 |
| 26 | +IPv6では、通常は運用者が割り当てたアドレス範囲を使用して、`2000::/3`の範囲内からグローバルユニキャストアドレスブロックを選択します。 |
| 27 | +クラスターのIPアドレス範囲をパブリックインターネットにルーティングする必要はありません。 |
| 28 | + |
| 29 | +IPアドレス割り当てのサイズは、実行する予定のPodとServiceの数に適している必要があります。 |
| 30 | + |
| 31 | +{{< note >}} |
| 32 | +`kubeadm upgrade`コマンドを使用して既存のクラスターをアップグレードする場合、`kubeadm`はPodのIPアドレス範囲("クラスターCIDR")やクラスターのServiceのアドレス範囲("Service CIDR")の変更をサポートしません。 |
| 33 | +{{< /note >}} |
| 34 | + |
| 35 | +### デュアルスタッククラスターの作成 |
| 36 | + |
| 37 | +`kubeadm init`を使用してデュアルスタッククラスターを作成するには、以下の例のようにコマンドライン引数を渡します: |
| 38 | + |
| 39 | +```shell |
| 40 | +# これらのアドレス範囲は例です |
| 41 | +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 |
| 42 | +``` |
| 43 | + |
| 44 | +わかりやすいように、主要なデュアルスタックコントロールプレーンノードのkubeadm[構成ファイル](/docs/reference/config-api/kubeadm-config.v1beta4/)`kubeadm-config.yaml`の例を示します。 |
| 45 | + |
| 46 | +```yaml |
| 47 | +--- |
| 48 | +apiVersion: kubeadm.k8s.io/v1beta4 |
| 49 | +kind: ClusterConfiguration |
| 50 | +networking: |
| 51 | + podSubnet: 10.244.0.0/16,2001:db8:42:0::/56 |
| 52 | + serviceSubnet: 10.96.0.0/16,2001:db8:42:1::/112 |
| 53 | +--- |
| 54 | +apiVersion: kubeadm.k8s.io/v1beta4 |
| 55 | +kind: InitConfiguration |
| 56 | +localAPIEndpoint: |
| 57 | + advertiseAddress: "10.100.0.1" |
| 58 | + bindPort: 6443 |
| 59 | +nodeRegistration: |
| 60 | + kubeletExtraArgs: |
| 61 | + - name: "node-ip" |
| 62 | + value: "10.100.0.2,fd00:1:2:3::2 |
| 63 | +``` |
| 64 | +
|
| 65 | +InitConfigurationの`advertiseAddress`は、APIサーバーがリッスンしていることをアドバタイズするIPアドレスを指定します。 |
| 66 | +`advertiseAddress`の値は`kubeadm init`の`--apiserver-advertise-address`フラグに相当します。 |
| 67 | +
|
| 68 | +`kubeadm`を実行してデュアルスタックコントロールプレーンノードを初期化します: |
| 69 | +
|
| 70 | +```shell |
| 71 | +kubeadm init --config=kubeadm-config.yaml |
| 72 | +``` |
| 73 | +
|
| 74 | +kube-controller-managerフラグ`--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6`はデフォルト値で設定されます。 |
| 75 | +[IPv4/IPv6デュアルスタックの設定](/ja/docs/concepts/services-networking/dual-stack#configure-ipv4-ipv6-dual-stack)を参照してください。 |
| 76 | +
|
| 77 | +{{< note >}} |
| 78 | +`--apiserver-advertise-address`フラグはデュアルスタックをサポートしません。 |
| 79 | +{{< /note >}} |
| 80 | +
|
| 81 | +### デュアルスタッククラスターへのノード参加 |
| 82 | +
|
| 83 | +ノードを参加させる前に、そのノードにIPv6ルーティングが可能なネットワークインターフェースがあり、IPv6フォワーディングが許可されていることを確認してください。 |
| 84 | +
|
| 85 | +以下は、ワーカーノードをクラスターに参加させるためのkubeadm[構成ファイル](/docs/reference/config-api/kubeadm-config.v1beta4/)`kubeadm-config.yaml`の例です。 |
| 86 | +
|
| 87 | +```yaml |
| 88 | +apiVersion: kubeadm.k8s.io/v1beta4 |
| 89 | +kind: JoinConfiguration |
| 90 | +discovery: |
| 91 | + bootstrapToken: |
| 92 | + apiServerEndpoint: 10.100.0.1:6443 |
| 93 | + token: "clvldh.vjjwg16ucnhp94qr" |
| 94 | + caCertHashes: |
| 95 | + - "sha256:a4863cde706cfc580a439f842cc65d5ef112b7b2be31628513a9881cf0d9fe0e" |
| 96 | + # 上記の認証情報をクラスターの実際のトークンとCA証明書に一致するように変更 |
| 97 | +nodeRegistration: |
| 98 | + kubeletExtraArgs: |
| 99 | + - name: "node-ip" |
| 100 | + value: "10.100.0.2,fd00:1:2:3::3" |
| 101 | +``` |
| 102 | +
|
| 103 | +また以下は、別のコントロールプレーンノードをクラスターに参加させるためのkubeadm[構成ファイル](/docs/reference/config-api/kubeadm-config.v1beta4/)`kubeadm-config.yaml`の例です。 |
| 104 | + |
| 105 | + |
| 106 | +```yaml |
| 107 | +apiVersion: kubeadm.k8s.io/v1beta4 |
| 108 | +kind: JoinConfiguration |
| 109 | +controlPlane: |
| 110 | + localAPIEndpoint: |
| 111 | + advertiseAddress: "10.100.0.2" |
| 112 | + bindPort: 6443 |
| 113 | +discovery: |
| 114 | + bootstrapToken: |
| 115 | + apiServerEndpoint: 10.100.0.1:6443 |
| 116 | + token: "clvldh.vjjwg16ucnhp94qr" |
| 117 | + caCertHashes: |
| 118 | + - "sha256:a4863cde706cfc580a439f842cc65d5ef112b7b2be31628513a9881cf0d9fe0e" |
| 119 | + # 上記の認証情報をクラスターの実際のトークンとCA証明書に一致するように変更 |
| 120 | +nodeRegistration: |
| 121 | + kubeletExtraArgs: |
| 122 | + - name: "node-ip" |
| 123 | + value: "10.100.0.2,fd00:1:2:3::4" |
| 124 | +
|
| 125 | +``` |
| 126 | + |
| 127 | +JoinConfiguration.controlPlaneの`advertiseAddress`は、APIサーバーがリッスンしていることをアドバタイズするIPアドレスを指定します。 |
| 128 | +`advertiseAddress`の値は`kubeadm join`の`--apiserver-advertise-address`フラグに相当します。 |
| 129 | + |
| 130 | +```shell |
| 131 | +kubeadm join --config=kubeadm-config.yaml |
| 132 | +``` |
| 133 | + |
| 134 | +### シングルスタッククラスターの作成 |
| 135 | + |
| 136 | +{{< note >}} |
| 137 | +デュアルスタックのサポートは、デュアルスタックアドレスを使用する必要があるという意味ではありません。 |
| 138 | +デュアルスタックネットワーク機能が有効になっているシングルスタッククラスターをデプロイすることができます。 |
| 139 | +{{< /note >}} |
| 140 | + |
| 141 | +よりわかりやすいように、シングルスタックコントロールプレーンノードのkubeadm[構成ファイル](/docs/reference/config-api/kubeadm-config.v1beta4/)`kubeadm-config.yaml`の例を示します。 |
| 142 | + |
| 143 | + |
| 144 | +```yaml |
| 145 | +apiVersion: kubeadm.k8s.io/v1beta4 |
| 146 | +kind: ClusterConfiguration |
| 147 | +networking: |
| 148 | + podSubnet: 10.244.0.0/16 |
| 149 | + serviceSubnet: 10.96.0.0/16 |
| 150 | +``` |
| 151 | + |
| 152 | +## {{% heading "whatsnext" %}} |
| 153 | + |
| 154 | +* [IPv4/IPv6デュアルスタックの検証](/ja/docs/tasks/network/validate-dual-stack) |
| 155 | +* [デュアルスタック](/ja/docs/concepts/services-networking/dual-stack/)クラスターネットワークについて読む |
| 156 | +* kubeadm[構成形式](/docs/reference/config-api/kubeadm-config.v1beta4/)についてもっと詳しく知る |
0 commit comments