Kubernetes 1.20 の SIG-Network の変更内容をまとめました。
What's New (新情報)
IPv4/IPv6 run
IPv4/IPv6 のデュアルスタックは、Service のデュアルスタックをサポートするため、利用者とコミュニティのフィードバックを元に再実装されました。クラスタでデュアルスタックが有効な場合、IPv4, IPv6 または両方の Service を作成することができます。既存の Service でもこの設定は変更可能です。詳細は更新された IPv4/IPv6 デュアルスタックのドキュメント をご覧ください。
Pod のホスト名を FQDN とする機能がベータに
1.19 でフィーチャーゲート SetHostnameAsFQDN
で導入された機能がデフォルトで有効になりました。詳しくは、Service と Pod に対しての DNS のドキュメントをご覧ください。
ドキュメントの Noteによると、FQDN が 64 文字を超える場合は、Linux では Pod の起動に失敗するようなのでご注意ください。
Urgent Upgrade Notes (アップグレード前の注意点)
- デュアルスタックの Service が alpha で追加されました。これは alpha API への破壊的な変更になります。デュアルスタックの API では Service の単一の
ipFamily
からipFamilyPolicy
(SingleStack
,PreferDualStack
,RequireDualStack
)、ipFamilies
(割り当てるファミリのリスト),clusterIPs
の 3 フィールドに書くようになりました。デフォルティングによって処理されるため、殆どの利用者は何もする必要はありません。利用者がデュアルスタックを要求しない限り、Service はシングルスタックになります。この機能はIPv6DualStack
のフィーチャーゲートによって設定できます。 (#91824, @khenidak) [SIG API Machinery, Apps, CLI, Network, Node, Scheduling and Testing]
API Changes (API の変更)
- EndpointSlice API に
serving
とterminating
という状態が追加されました-
serving
は terminating 状態に関わらず、エンドポイントの readiness をトラックします。ready
は terminating ではないときのみに true になるという点で、ready
とは区別されます。 -
terminating
は Endpoint が terminating ときに true になります。Pod に関しては、deletion timestamp が入った状態の endpoint 全てになります。(#92968, @andrewsykim) [SIG Apps and Network]
-
- downward API で hugepages をサポートするようになりました (#86102, @derekwaynecarr) [SIG API Machinery, Apps, CLI, Network, Node, Scheduling and Testing]
- Endpoint と Service 向けの AppProtocol が GA になりました。
ServiceAppProtocol
フィーチャーゲートは 1.21 で非推奨 (deprecated) になります。(#96327, @robscott) [SIG Apps and Network] - type LoadBalancer を指定した Service のノードポートの自動的な割当を、
Service.spec.allocateLoadBalancerNodePorts=false
という設定で無効にできるようになりました。デフォルトでは現在の挙動と同じく、type LoadBalancer が指定された Service ではノードポートを割り当てます (#92744, @uablrek) [SIG Apps and Network] - Service の
type
を変更した際に、不要になるフィールドが自動的にクリアされるようになりました。例えば、type=LoadBalancer から type=Cluster に変更した場合は、ノードポートの割当が自動的にクリアされます。(#95196, @thockin) [SIG API Machinery, Apps, Network and Testing] - EndpointSlice に
EndpointSliceNodeName
フィーチャーゲートで管理される、NodeName という新しいフィールドが追加されました - Kube-controller-manager: ボリュームプラグインはループバックやローカルアドレスへの通信を制限できるようになりました。
--volume-host-allow-local-loopback=false
または、特定の範囲を指定した--volume-host-cidr-denylist
(例--volume-host-cidr-denylist=127.0.0.1/28,feed::/16
)で設定できます (#91785, @mattcary) [SIG API Machinery, Apps, Auth, CLI, Network, Node, Storage and Testing]- CVE-2020-8555 という脆弱性への対応のようです
- DNS-1123 エラーメッセージで、RFC 1123 には正確には準拠していないと明示するようになりました (#94182, @mattfenwick) [SIG API Machinery, Apps, Auth, Network and Node]
- RFC 1123 ではホスト名が小文字であることを強制していませんが、Kubernetes では小文字であることを強制するため、「lowercase RFC 1123 subdomain」という表記に変えたようです
- リマインダ: ラベル
failure-domain.beta.kubernetes.io/zone
とfailure-domain.beta.kubernetes.io/region
は非推奨になっているため、それぞれtopology.kubernetes.io/zone
とtopology.kubernetes.io/region
を使用してください。failure-domain.beta...
のラベルを利用している場合は、同等のtopology...
ラベルに切り替えてください (#96033, @thockin) [SIG API Machinery, Apps, CLI, Cloud Provider, Network, Node, Scheduling, Storage and Testing] - Server Side Apply のラベルセレクタは直感的なマージができないため、アトミックに扱われるようになりました。セレクタ全体が一つのライタによって管理され、同時に更新されるようになります (#93901, @jpbetz) [SIG API Machinery, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Storage and Testing]
- Service は
clusterIPs
フィールドを持つようになりました。clusterIPs[0]
はclusterIP
と同じ内容となり、作成・更新の操作で同期するようになります (#95894, @thockin) [SIG Network] - フィーチャーゲート
CSIServiceAccountToken
が追加され、CSIDriverSpec
に 2 つのフィールドが追加されました (#93130, @zshihang) [SIG API Machinery, Apps, Auth, CLI, Network, Node, Storage and Testing]
Features (機能追加)
- kubectl に
create ingress
コマンドが追加されました (#78153, @amimof) [SIG CLI and Network]-
kubectl create ingress NAME --rule=host/path=service:port
のような形で Ingress が命令的に作れるようになりました
-
- node-local-cache アドオンに headless service が追加されました (#88412, @stafot) [SIG Cloud Provider and Network]
- prometheus のモニタリング目的のようです
- デュアルスタックのベアメタルクラスタでは、
kubelet --node-ip
を使ってデュアルスタックの IP を渡せるようになりました。例:kubelet --node-ip 10.1.0.5,fd01::0005
。非ベアメタルのクラスタはまだサポートされていません。ノードがデュアルスタックのアドレスを持つデュアルスタッククラスタでは、hostNetwork の Pod はデュアルスタックの Pod IP を持つようになりました。 (#95239, @danwinship) [SIG Network and Node]-
「ベアメタル」は
--cloud-provider
を指定しない場合を指しているようです
-
「ベアメタル」は
- API オブジェクト (Pod, Service, NetworkPolicy) の SCTP サポートが GA となりました。カーネルレベルで SCTP の有効化には影響しない点には留意してください。また、いくつかのクラウドプラットフォーム、ネットワークプラグインでは SCTP トラフィックをサポートしていません (#95566, @danwinship) [SIG Apps and Network]