0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KubernetesAdvent Calendar 2024

Day 12

【K8s】microk8sでIPv6を有効化してIngressをIPv6にした話

Posted at

はじめに

今回はmicrok8sでIPv6をやった話です。
IPv6が使えるとものすごく便利になるものですね。

私は今回、IngressをMetalLBの外部IP設定で使っていたのですが、IPv4だとポート開放するのが少し面倒に感じていました。
そのため、IPv6に対応させようというのが発端です。

注意点

一番大きな注意点として、IPv6に対応させるとなると、クラスタを組み直す必要があったりします
これを聞いて少し尻込みする方もいるかもしれませんが、最初さえやってしまえばあとは楽なもんです。
こればかりは耐えましょう...
なぜクラスタを組み直す必要があるかというと、一つのノードで設定しても、マスターノードと設定の同期が行われるため、無効化されてしまうためです。

他の注意点としては、

  • 全てのノードで設定することが推奨されている
  • microk8sを再インストールする必要がある

ですね。

microk8sを設定する

さて、実際に設定していきましょう。

まずは、microk8sをアンインストール

snap remove microk8s

microk8sの設定ファイルを編集するのですが、どこにあるかというと、/var/snap/microk8s/common/.microk8s.yamlにあります。
ですが、おそらく、最初はディレクトリすらないのでディレクトリもファイルも作ってしまいましょう。
ちなみにこのファイルでクラスタドメインなどの設定もできるらしいですが、面倒なのでやったことはないですね()

IPv6の設定の書き方ですが、

.microk8s.yaml
---
version: 0.1.0
extraCNIEnv:
  IPv4_SUPPORT: true                 # IPv4を有効に
  IPv4_CLUSTER_CIDR: 10.3.0.0/16     # IPv4のクラスターIPのCIDR
  IPv4_SERVICE_CIDR: 10.153.183.0/24 # IPv4のサービスIPのCIDR
  IPv6_SUPPORT: true                 # IPv6を有効に
  IPv6_CLUSTER_CIDR: fd02::/64       # IPv6のクラスターIPのCIDR
  IPv6_SERVICE_CIDR: fd99::/108      # IPv6のサービスIPのCIDR
extraSANs:
  - 10.153.183.1                     # クラスターネットワーク上のK8sコントロールプレーンPodのIP

基本的にこれをこのまま使えば良いでしょう。

そしてこのファイルを配置した状態で、再度microk8sをインストールします。

snap install microk8s --classic

サービス側の設定

お次はサービス側の設定です。
これに関しては至って簡単です。

まずはmetalLBから

spec:
  addresses:
    - 172.16.150.1-172.16.150.150
    - 240b:13:xxxx:xxxx:150::100-240b:13:xxxx:xxxx:150::150
  autoAssign: true

IPAddressPoolでこのようにIPv6の範囲も指定します。

次に、K8sのServiceのマニフェストファイルを編集します。

apiVersion: v1
kind: Service
...
spec:
  clusterIP: 10.153.183.148
  clusterIPs:
    - 10.153.183.148
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
+   - IPv6
+ ipFamilyPolicy: PreferDualStack
- ipFamilyPolicy: SingleStack
  ports:
    ...
  type: LoadBalancer

こんな感じになればOKです。
このPreferDualStackというのに書き換えるだけで大丈夫です。
すでにデプロイされているものを編集するのが一番手っ取り早いかと思います。

PreferDualStackというのは、可能であればデュアルスタックで構成するという設定ですね。
RequireDualStackというのもあり、こちらは、必ずデュアルスタックという設定なので、ここら辺は使い分けでいいかと思います。

今回よくわからなかった点

今回あんまり分からなかったなぁというのが一つあって、それは、IPv6の固定です。
IPv4であれば、MetalLBの仕様で固定できたのですが、IPv6だとエラーが出ます。
MetalLBのドキュメントを読んだのですが、よくわからなかったので、また今度やってみたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?