※当ブログではアフィリエイト広告を利用しています
Kubernetes 1.14が2019/3/26にリリースされました。
本記事では、公式ドキュメントを読み解きながら、その新機能についてまとめます。
とはいえ、基本的にはBeta→GAのものなので既に使ったことのある機能も多いかもしれません。
「これらの機能が正式サポートされた」ということがポイントです。
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#114-whats-new
目次
Windows Node
WindowsのNodeをKubernetesクラスターとして組み込めるようになりました。
以前からBetaとしては存在しましたが、今回から正式サポートされるようになり、従来のLinux Nodeに近い形でKubernetesの機能が使用できるようになっています。
注意点としては、
- サポートされるのはWindows Server 2019
- サポートされるネットワーク・プラグインはAzure-CNI、OVN-Kubernetes、Flannel
という部分です。
kubectl プラグイン
kubectl の機能を強化するプラグインを導入するための仕組みが正式サポートとなりました。
プラグインの作成方法など、詳しくは公式ドキュメントを参照してください。機会があれば当ブログでも書きたいですね。
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
Local Persistent Volume
Persistent Volumeの種類として「Local」を使用できるようになりました。その名の通り、Podが動作するノードのファイルシステムを使用します。
hostPathと似ているようにも思えますが、local persistent volumeはhostPathとは違い、「マルチノードに対応し、本番環境での使用を想定されている」点が大きく異なります。今後はhostPathではなく、localを積極的に使っていきましょう。
hostPathとlocal pvの違いについては以下が詳しいです。
https://qiita.com/sotoiwa/items/09d2f43a35025e7be782
https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/
PID制限(Beta)
NodeやPod上で動作するプロセス数を制限することができます。
Node全体のPID数を制限するには、以下ドキュメントを参照してください。(pidで検索するとそこにジャンプできます)
https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/
PodごとのPID数を制限するには、NodeにSupportPodPidsLimitというパラメーターを与えることで指定することができそうです。が、ドキュメントが見当たらず・・・
Podに対する優先度の設定
Podに対して優先度(Priority)を作成し、
- システム上重要なPod(=優先度の高いPod)から順番にScheduleする
- ノードのリソースが不足する場合、優先度の低いPodを削除する
ことができるようになります。
これも以下のドキュメントにまとまっています。
https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
PodReadinessGates
Podに spec.readinessGatesを指定することができるようになりました。
Podを作成する際にはReadiness Probeを指定することが多いと思いますが、「Podが準備できているのにIngress/Serviceの反映が終っておらず、実態とは違う」という場合があると思います。
readinessGatesを指定することで、サービスを提供するURLへの接続がReadyになった状態で、PodのステータスをRunningにすることができるようになります。
こちらもドキュメントが見つからなかったので、こちらを参照ください。
https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md
kubeadmでの証明書自動コピー
Masterとなるノード(Control Planeと言ったりします)をHA構成する際、証明書を自動的にコピーできるようになりました。
これまで手動コピーが必要だったため、HA構成が少し楽になると思います。
これに伴い、HA構成の手順も変更されています。
kubectl join phase コマンド
kubectl join phase コマンドが使用できるようになりました。
kubectl join の各ステップを細かく実行したい場合に使います。
アップデート時の注意
「よっしゃ!早速アップデートしたろ!」と思った場合、以下のKnown IssuesとUrgent Upgrade Notesは必ず確認しましょう。特に本番環境に適用する場合は絶対です。
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#known-issues
その他
沢山のバグフィックスや機能の微調整が加えられています。
現バージョンのKubernetesで問題を感じていて1.14で修正されている場合は積極的にアップデートを検討しましょう。