Kubernetes 1.21 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてにピックアップしました。
主な変更点 (What's New)
- なし
既知の問題 (Known Issues)
- なし
重大なアップグレードに関する警告 (Urgent Upgrade Notes)
-
kubeadm: init時にKubeletConfiguration中のcgroupDriverの値が空の場合、ユーザが明示的に指定しなかったとしても"systemd"がセットされるようになりました。この変更により、既存のノードに対してコンテナランタイムが"systemd"ドライバを利用するように設定する必要があります。この話題に対するドキュメントを参照してください。
kubeadm upgrade
を利用した既存のクラスタ/ノードに対するアップグレード時は、利用している古いcgroupDriverの値が保持されますが、1.22 ではこの変更が「upgrade」にも適用されます。systemd」ドライバーへの移行、または「cgroupfs」ドライバのままでの移行については、 cgroupドライバの設定方法 を参照してください。 (#99471, @neolit123) [SIG Cluster Lifecycle]
種々の変更 (Changes by Kind)
廃止予定 (Deprecation)
-
kubeadm: 非推奨の
alpha selfhosting pivot
が削除されました。 (#97627, @knight42) -
kubeadm:
kubeadm alpha kubeconfig user
コマンドが昇格し、kubeadm kubeconfig user
になりました。また、それに伴いkubeadm alpha kubeconfig user
が非推奨になりました。 (#97583, @knight42) [SIG Cluster Lifecycle]-
kubeadm kubeconfig user -h
を実行すると "Alpha Disclaimer"メッセージが出てしまうのはバグでしょうか…。
$ kubeadm kubeconfig user -h Output a kubeconfig file for an additional user. Alpha Disclaimer: this command is currently alpha.
-
--client-name
と--org
が指定できますが、指定しただけでは何の権限も与えられていないので別途適切なRole
を割り当てましょう。
-
-
kubeadm:
kubeadm alpha certs
コマンドが削除されました。代わりにkubeadm certs
コマンドを利用してください。 (#97706, @knight42) [SIG Cluster Lifecycle] -
kubeadm: 非推奨のkube-dnsは今後サポートされません。もし、
ClusterConfiguration.dns.type
がkube-dns
に設定された場合、kubeadmはエラーを吐くようになりました。 (#99646, @rajansandeep) [SIG Cluster Lifecycle]- RIP
API の変更 (API Change)
- なし
機能 (Feature)
-
kubeadm: CoreDNS v1.8.0を含むようになりました。 (#96429, @rajansandeep) [SIG Cluster Lifecycle]
- ちなみに、気軽にこれを v1.8.1 以降にアップグレードすると endpointsliceのwatchおよびlist権限が足りなくて死にます。ClusterRole, system:corednsに権限を追加しましょう。
# kubectl get clusterrole system:coredns -o yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2021-04-19T04:48:26Z" name: system:coredns resourceVersion: "240" uid: 32cdb275-abc3-4153-b248-13dcaaa74473 rules: - apiGroups: - "" resources: - endpoints - services - pods - namespaces verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get # 以下を追加。 - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch
-
kubeadm: IPv6DualStackのFeatureGateがベータに昇格し、デフォルトで有効化されました。 (#99294, @pacoxu) [SIG Cluster Lifecycle]
-
kubeadm: IPv6サイトローカルアドレスは非推奨のため、ユーザに警告が出るようになりました。 (#99574, @pacoxu) [SIG Cluster Lifecycle]
-
kubeadm: 証明書チェーンの検証が追加されました。kubeadmを外部CAモードで利用する際、中間証明書で証明書に署名するのを許可するようになりました。ただし、中間証明書はそれぞれの証明書に含まれている必要があります、 (#97266, @robbiemcmichael) [SIG Cluster Lifecycle]
-
kubeadm: ノードのkernelに対する検証において、
CGROUP_PIDS
とFAIR_GROUP_SCHED
を必須として、CFS_BANDWIDTH
とCGROUP_HUGETLB
を任意のオプションとして扱うように修正しました。 (#96378, @neolit123) [SIG Cluster Lifecycle]- kubeadm の preflight checkのための外部ライブラリとして利用されている kubernetes/system-validators のバージョンをv1.3.0に上げたようですが、すでにv1.4.0がリリースされているようです。
-
kubeadm: "master"とラベルされているノードが除外される仕様の以前のLBモードとの後方互換性を保持するために、"init", "join"および"upgrade"時にコントロールプレーンノードにラベルされた
"node.kubernetes.io/exclude-from-external-load-balancers"
が適用されるようになりました。詳しくはIssueの#97543か、リンクされたKEPを参照してください、 (#98269, @neolit123) [SIG Cluster Lifecycle]-
"master" ラベルがつけられたノードは、Service
type: Loadbalancer
の実装によっては、メンバーから除外されていましたが、そのような挙動を正式に設定したい場合は、ノードにこのラベルをつける必要があるようです。
-
"master" ラベルがつけられたノードは、Service
-
kubeadm: ユーザがkubeadmの設定を利用してイメージレポジトリをカスタマイズしていた場合、Docker だけでなく、すべてのコンテナランタイムにおいて、
--pod-infra-container-image
でカスタマイズしたpauseコンテナのイメージリポジトリとタグを kubelet に渡します。このフラグは、イメージをガベージコレクトさせないようにkubeletに指示します。 (#99476, @neolit123) [SIG Cluster Lifecycle] -
kubeadm:
kubeadm init
とkubeadm join
時のプレフライトチェック時にホスト名を検証するようになりました。不正な名前が指定された場合には警告が表示されます。 (#99194, @pacoxu)
ドキュメント (Documentation)
- なし
バグ修正 (Bug or Regression)
- kubeadm: v1.19のクラスター作成時に、etcd v3.4.13をインストールします。 (#97244, @pacoxu)
- kubeadm: kubeadmによるアップグレード時に、カスタマイズされたCoreDNSの設定をデフォルトで上書きしてしまうバグを修正しました。 (#97016, @rajansandeep) [SIG Cluster Lifecycle]
-
kubeadm:
kubeadm upgrade plan
の出力するテキストの形式が変更されました。もし、あなたがスクリプトやその他の自動化においてこれらの出力を利用していた場合、この変更をレビューして新しい出力形式に合うようにスクリプトを変更してください。 (#98728, @stmcginnis) [SIG Cluster Lifecycle]-
upgrade plan
で出力されるテーブルのヘッダにおいて、利用可能なバージョンを示す列名がAVAILABLE
からTARGET
に変更されたようです。
-
-
kubeadm: 32bit Linuxプラットフォームにおいてホストのメモリサイズの検知に関するバグを修正しました。 (#97403, @abelbarrera15) [SIG Cluster Lifecycle]
-
sysinfo
の返すtotalram
の値は、環境によってmem_unit
でかける必要があることを忘れていた、というバグのようです。
-
-
kubeadm:
kubeadm join
時に、存在するetcdのメンバーの名前が無かった場合に正しく処理できなかったバグを修正しました。 (#97372, @ihgann) [SIG Cluster Lifecycle] - kubeadm: 既存のadmin.confに外部認証情報があると、cluster-info ConfigMapにCA証明書が書き込まれないというバグを修正しました。 (#97919, @neolit123) [SIG Cluster Lifecycle]
-
kubeadm: Kubernetes のCIで利用するバージョンを "k8s infra bucket" から取得するようにしました。 (#98836, @hasheddan) [SIG Cluster Lifecycle]
-
kubeadm init --kubernetes-version ci/latest
とかユーザがすることあるのか…?
-
-
allocate-node-cidrs
がfalse
に設定された場合、node-cidr-mask
に対するPodのサブネットの検証をスキップするように変更しました。 (#98984, @SataQiu) [SIG Cluster Lifecycle]