kubernetes

Kubernetes 1.12: 新機能 (New Features)


はじめに

このエントリは、Kubernetes 1.12 の CHANGELOG から新機能(New features)についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。


New Features


  • Kubernetes はノードレベルの Container Storage Interface(CSI)Driver によって報告された Volume Topology を登録します。これにより Kubernetes は CSI Topology Mechanisms をサポートしました。(#67684, @￰verult) [SIG API Machinery、SIG Node、SIG Storage、SIG Testing]

  • Addon-manager が v8.7 にアップデートされました(#68299, @￰MrHohn) [SIG Cluster Lifecycle、SIG Testing]

  • CSI Volume Plugin は、アタッチされない CSI Volume に対し、外部の attacher が不要となりました(#67955, @￰jsafrane) [SIG API Machinery、SIG Node、SIG Storage、SIG Testing]

  • KubeletPluginsWatcher の機能はベータに移行しました(#68200, @￰RenaudWasTaken) [SIG Node、SIG Storage、SIG Testing]

  • ジョブ終了時にジョブをクリーンナップするための TTL のメカニズムが追加されました(#66840, @￰janetkuo) [SIG API Machinery、SIG Apps、SIG Architecture、SIG Testing]

  • スケジューラーのノード選択時の計算タスクが最適化されました(#67555, @￰wgliang) [SIG API Machinery、SIG Scheduling]

  • Pod のアフィニティ/アンチアフィニティのパフォーマンスが向上しました(#67788, @￰ahmad-diaa) [SIG Scalability、SIG Scheduling]

  • kubelet に CFS Quata の期間を変更するパラメーターとコンフィグオプションが追加されました(デフォルト値: 100m、1µs から 1s まで指定可能)。これにより Guranteed と Burstable OoS クラスの Pod がクラスターで起動しているワークロードでは応答の待ち時間が改善します。(#63437, @￰szuecs) [SIG API Machinery、SIG Apps、SIG Architecture、SIG CLI、SIG Node、SIG Scheduling]

  • cloud-controller-manager にセキュア通信用のポート設定をする --secure-port が追加されました。移譲された認証と認可は、 Aggregate API サーバーと同じフラグを使用して構成されます。このフラグ設定されていない場合、セキュアポートへは /healthz へのみアクセスできます。(#67069, @￰sttts) [SIG Auth、SIG Cloud Provider]

  • kube-controller-manager にセキュア通信用のポート設定をする --secure-port が追加されました。移譲された認証と認可は、 Aggregate API サーバーと同じフラグを使用して構成されます。このフラグ設定されていない場合、セキュアポートへは /healthz へのみアクセスできます。(#64149, @￰sttts) [SIG Auth、SIG Cloud Provider]

    :pencil: cloud-controller-manager と同じ内容です


  • kubeadm alpha phases renew <cert-name> コマンドが追加されました(#67910, @￰liztio) [SIG API Machinery、SIG Cluster Lifecycle]

  • ProcMount が SecurityContext に追加され、 AllowedProcMounts が PodSecurityPolicy に追加されました。AllowedProcMounts が指定されない場合、コンテナ内の /proc パスがマスクされないようになりました。(#64283, @￰jessfraz) [SIG API Machinery、SIG Apps、SIG Architecture、SIG Node]

  • Azure Cloud Provider は kubernetes.azure.com/managed=falsealpha.service-controller.kubernetes.io/exclude-balancer=true のラベルがついたアンマネジメントノード(オンプレ用途など)をサポートしました(#67984, @￰feiskyer) [SIG Azure、SIG Cloud Provider]

  • SCTP は Pod、Service、Endpoint および NetworkPolicy で使われる TCP/UDP と共に追加プロトコル(アルファ)としてサポートされました(#64973, @￰janosi) [SIG API Machinery、SIG Apps、SIG Architecture、SIG CLI、SIG Cloud Provider、SIG Cluster Lifecycle、SIG Network、SIG Node、SIG Scheduling]

  • autoscaling/v2beta2 と custom_metrics/v1beta2 が導入され、Ojbect と Pod のメトリクスセレクターや、ターゲットとして AverageValue が指定できるようになりました(#64097, @￰damemi) [SIG API Machinery、SIG Architecture、SIG Autoscaling、SIG CLI、SIG Testing]

    :pencil:実際の指定方法はドキュメントの Horizontal Pod Autoscaler Walkthroughを参照

  • Feature Gate のアルファ機能で NodeLease が使用できるようになりました。kubelet は kube-node-lease ネームスペース上に Lease オブジェクトを作成し、定期的に更新します。リース期間はデフォルトは 40s で、kubelet.config.k8s.io/v1beta1.KubeletConfiguration の NodeLeaseDurationSeconds フィールドで変更できます。(#66257, @￰mtaufen) [SIG API Machinery、SIG Apps、SIG Architecture、 SIG Cluster Lifecycle、SIG Node、SIG Testing]

    :pencil:
    Lease とはノードのハートビートの表現するために作成されたリソースです。
    最終的にハートビートは Lease が使用される予定です

  • PodReadinessGate がデフォルトで有効になりました(#67406, @￰freehan) [SIG Node]

    :pencil:
    この機能が有効な場合、Pod の Readiness 条件をカスタマイズできるようになります

  • Azure Cloud Provider は kubernetes.azure.com/resource-group= <rg-name>alpha.service-controller.kubernetes.io/exclude-balancer=true というラベルの付いたクロスリソースグループノードをサポートしました(#67604, @￰feiskyer) [SIG Azure、SIG Cloud Provider、SIG Storage]

  • Admission Webhooks のアノテーションがサポートされました(#58679, @￰CaoShuFeng) [SIG API Machinery、SIG Auth]

  • スケジューラーは全てのノードをスコアリングせずに Pod をスケジュールできるようになりました。これにより大きなクラスターでスケジューラーのパフォーマンスが向上します。(#66733, @￰bsalamat) [SIG Scheduling]

    :pencil: デフォルトのスコアリングするノード数は 50% になっています。
    ただし ソースコードに最低台数の設定値が 100 と定義されているため、100 未満のノード数の場合は今まで通り全てのノードをスコアリングします。

  • Azure のゾーンに分けられていない Managed Disks のノードアフィニティが追加されました(#67229, @￰feiskyer) [SIG Azure]

  • ローカルストレージのための Attacher/Detacher インタフェースをリファクタリングしました(#66884, @￰NickrenREN) [SIG Storage]

  • Azure Managed Disks の DynamicProvisioningScheduling と VolumeScheduling がサポートされました。この機能を使う場合は、Feature Gates の DynamicProvisioningScheduling と VolumeScheduling を有効にすべきです。(#67121, @￰feiskyer) [SIG Azure、SIG Storage]

  • audit.k8s.io API グループは v1beta1 から v1 に移行しました(#65891, @￰CaoShuFeng) [SIG API Machinery]

  • Quota Admission Configuration API は v1alpha1 から v1beta1 に移行しました(#66156, @￰vikaschoudhary16) [SIG Node、SIG Scheduling]

  • kube-apiserver --help フラグのヘルプがセクションで表示されるようになりました(#64517, @￰sttts)

    :pencil:出力例

Usage:

kube-apiserver [flags]

Generic flags:

--advertise-address ip
The IP address on which to advertise the apiserver to members of the cluster. This address must be reachable by the rest of the cluster. If blank, the --bind-address will be used. If --bind-address is unspecified, the host's default interface will be used.
--cors-allowed-origins strings
List of allowed origins for CORS, comma separated. An allowed origin can be a regular expression to support subdomain matching. If this list is empty CORS will not be enabled.
--external-hostname string
The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs).
...
Etcd flags:

--default-watch-cache-size int
Default watch cache size. If zero, watch cache will be disabled for resources that do not have a default watch size set. (default 100)
--delete-collection-workers int
Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup. (default 1)
--deserialization-cache-size int
Number of deserialized json objects to cache in memory.
--enable-garbage-collector
Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-controller-manager. (default true)
...


  • AzureDisk のストレージクラスのために Azure Managed Disk がアベイラブルゾーンをサポートし、新しいパラメータ zonedzone および zones が追加されました(#66553, @￰feiskyer) [SIG Azure]

  • kubectl create job コマンドが追加されました(#60316, @￰soltysh) [SIG CLI]

    :pencil:
    以下のようにコマンドから Job を作成することができます

    kubectl create job my-job --image=busybox

  • 証明書のブートストラップとローテーションを提供する Feature Gate の RotateKubeletServerCertificate がアルファからベータに移行しました(#66726, @￰liggitt) [SIG Auth、SIG Node]

  • アベイラブルゾーンを持つ Azure ノードには、failure-domain.beta.kubernetes.io/zone=<region>-<zoneID> のラベルが付与されるようになりました(#66242, @￰feiskyer) [SIG Azure]


  • kubeadm config print-default コマンドで デフォルトのコンポーネント設定が確認できるようになりました(#66074, @￰rosti) [SIG Cluster Lifecycle]

  • MountPropagation 機能が GA に昇格しました。これにより Featue Gate の MountPropagation は 非推奨となり、 v1.13 で削除される予定です。(#67255, @￰bertinatto) [SIG Apps、SIG Architecture、SIG Node、SIG Storage]

  • Juju charms にUbuntu 18.04 (Bionic) シリーズが追加されました(#65644, @￰tvansteenburgh)

  • kubeadm 設定に独自の API Endpoint を持つ複数のコントロールプレーンインスタンスを定義できるようになりました。ブートストラップのコントロールプレーンインスタンスの API Endpoint は、 InitConfiguration.APIEndpoint で定義し、追加するコントロールプレーンインスタンスの API Endpoint は、JoinConfiguration.APIEndpoint を使用して定義します。(#67832, @￰fabriziopandini)


  • kubectl apply コマンドに --server-dry-run フラグが追加されました。このフラグを使用すると、データ変更なしで結果を確認できます(#68069, @￰apelisse)

  • CSI Plugin discovery のメカニズムを改善し、CSI Driver と Kubernetes が相互にカスタマイズできるようになる CSI Cluster Registration を導入しました(#67803, @￰saad-ali)

  • Pod 内で PID の名前空間の共有する PodShareProcessNamespace 機能がベータに昇格しました(#66507, @￰verb)