このエントリは、Kubernetes 1.18 の CHANGELOG から 各変更点についてまとめたページをまとめています。
1.18 の主な変更点(What’s New)
Topology Manager がベータになりました
Topology Manager を利用すると、CPU とデバイス(SR-IOV VFs など)のリソース割り当てを調整し、低レイテンシ用に最適化された環境でワークロードが実行できます。
Topology Manager が導入される前は、CPU とデバイスマネージャーのリソース割り当て方法はお互いに独立していたため、複数の CPU を搭載したマルチソケットのサーバーで望ましくないリソースの割り当てが発生し、アプリケーション性能を低下させる可能性がありました。
- KEP の表題は Node Topology Manager となっています。
-
現在のところ CPU Manager が
static
なっているノード上で動作します。
Serverside Apply - ベータ 2
Server-side Apply が v1.18 で ベータ 2 になりました。
このバージョンで、全ての Kubernetes オブジェクトのフィールドに対する変更を追跡、管理するために、リソースがいつ変更されたかを知ることができるようになりました。
Ingress が拡張され、IngressClass リソースの導入
Kubernetes 1.18 の Ingress には、2 つの重要な追加である pathType
フィールドとIngressClass
リソースの追加がありました。
pathType
フィールドはパスの一致方法を指定できます。デフォルト値として使われる ImplementationSpecific
に加えて、完全一致の Exact
、前方一致の Prefix
が pathType
として指定できます。
- Prefix の設定例
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- http:
paths:
- path: /v1
pathType: Prefix
backend:
serviceName: test
servicePort: 80
- 現状は Proxy vendors の実装方法で結構違うようです。
IngressClass リソースは、Kubernetes クラスター内の Ingress タイプを指定するために使用されます。Ingress の ingressClassName
フィールドに、関連付けたい IngressClass を指定できます。この新しいリソースとフィールドは、非推奨となった kubernetes.io/ingress.class
アノテーションに代わるものとして利用されます。
-
kubernetes.io/ingress.class
は複数の Ingress コントローラーが実行されている場合に、どのコントローラーを使用するかを指定できるアノテーションでした。 - IngressClass の設定例
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: external-lb
spec:
controller: example.com/ingress-controller
parameters:
apiGroup: k8s.example.com/v1alpha
kind: IngressParameters
name: external-lb
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx
spec:
ingressClassName: external-lb
rules:
- host: nginx.test
http:
paths:
- backend:
serviceName: nginx
servicePort: 80
SIG CLI introduces kubectl debug
SIG CLI はとても長い間、デバッグユーティリティの必要性について議論されてきましたが、エフェメラルコンテナ の開発に伴い、kubectl exec
上に構築されたツールで開発者をサポートする方法がより明確になりました。
kubectl debug という非常に有用なコマンドの追加により、開発者はクラスタ内にある Pod のデバッグが簡単になりました。このコマンドは、調査対象の Pod 内に一時的なコンテナを作成し、そのコンテナのコンソールへ接続することで調査対象の Pod を調べることができます。
- 詳しくはこちらの Kubernetes 1.16: Ephemeral Containers (alpha) を参照してください
Kubernetes の Windows CSI サポート(アルファ)の紹介
Kubernetes v1.18 のリリースにともない、CSI Proxy for Windows のアルファバージョンがリリースされました。CSI Proxy for Windows を使用すると 事前に承認しておくことで non-privileged なコンテナで Windows 上の privileged なストレージの操作を実行できます。また CSI Proxy for Windows を利用することで、CSI ドライバーを Windows でサポートできるようになりました。
他にも SIG Storage は v1.18 のリリースで多くの進捗があり、次のストレージ機能が GA となりました。
- Raw Block のサポート: マウントされたファイルシステムだけでなく、コンテナー内のブロックデバイスとしてボリュームを表示できるようになりました。
- ボリュームの複製: CSI 経由の Kubernetes API を使用し、PersistentVolumeClaim の元となるストレージボリュームを複製します。
- CSIDriver Kubernetes API オブジェクト: CSI ドライバーの検出を簡素化し、CSI ドライバーが Kubernetes の動作をカスタマイズできるようになりました。
SIG Storage は、Kubernetes v1.18 でアルファとして次の新しいストレージ機能も導入しています。
- Windows CSI のサポート: CSI Proxy を利用して、Windows 上でコンテナー化された CSI ノードプラグインを有効にする
- ボリューム所有権の OnRootMismatch オプション: fsGroupChangePolicy に OnRootMismatch ポリシーを利用すると、所有権の変更を必要とするたくさんのディレクトリとファイルを持つボリュームのマウント時間が短くなります。
- fsGroupChangePolicy に Always を設定すると現在の動作が維持されます。
その他の注目すべき機能
SIG Network
SIG Network では、新しい CI ジョブでテストカバレッジを大幅に増やし、IPv6 がベータになりました。
NodeLocal DNSCache は v1.18 で GA となりました。NodeLocal DNSCache は dnsCache ポッドを DaemonSet として実行し、ClusterDNS のパフォーマンスと信頼性を向上させるアドオンです。#1351