tencent cloud

Tencent Kubernetes Engine

TKE Kubernetesメジャーバージョンの更新説明

PDF
フォーカスモード
フォントサイズ
最終更新日: 2024-02-28 17:14:43

1.22 changes since 1.20

重大な更新

PodSecurityPolicyは破棄されました

PodSecurityPolicyは1.21で破棄され、今後1.25で削除されます。Pod Security Admissionまたはサードパーティのアドミッションプラグインを評価して移行することができます。

SecretsとConfigMaps GAは変更できません

SecretまたはConfigMapを変更不可(immutable: true)に設定すると、kubeletはこれらのオブジェクトの変化をwatchせず、再度コンテナ内にマウントし、apiserverの負荷を軽減することができます。この機能は1.21でGAに進みます。

CronJobs GA

CronJobsは1.21でGA(batch/v1)に進み、デフォルトでより良い性能のバージョンコントローラCronJobControllerV2を有効化します。

IPv4/IPv6デュアルスタックのサポートはBeta段階に進みました

デュアルスタックネットワークはPod、サービスおよびノードがIPv4およびIPv6アドレスを取得できるようにし、1.21では、デュアルスタックネットワークはalphaからbetaにアップグレードされ、デフォルトで有効化されます。

ノードのグレースフルシャットダウン

この機能は1.21でbeta段階に進み、ノードをシャットダウンした時に、kubeletに、ノード上のPodがグレースフルシャットダウンしたことを通知します。

持続的なボリュームのヘルスモニタリング

1.21ではこのalpha機能が導入され、PVを監視できるようにし、ボリュームの実行状況を把握し、ボリュームが異常になった時にマーキングを行います。このときワークロードが反応し、データに対する異常なボリュームからの書き込みまたは読み取りを回避します。

Server-side Apply GA

Server-side Applyはステートメント式の設定によってユーザーおよびコントローラがリソースを管理できるようにします。ステートメント方式によってオブジェクトを作成または変更することなどを含みます。Server-side Applyは1.22でGA段階に進みます。

外部証明書GA

1.22から、外部証明書はGA段階に進み、インタラクティブなログインフローのプラグインにより良いサポートを提供します。詳細な情報については、sample-exec-pluginをご参照ください。

ETCDを3.5.0に更新

1.22はデフォルトでETCD バージョン3.5.0を使用します。このバージョンは安全性、性能、モニタリングおよび開発者の体験を改善し、複数のbugを修復し、ログ記録の構造化、内蔵ログのローテーションなどの重要な新機能が追加されます。

MemoryQoS

1.22からalphaバージョンの MemoryQoS機能をサポートします。有効化すると、Cgroups v2 APIを使用してメモリ割り当てと隔離を管理および制御し、メモリリソースで競合が発生した場合、ワークローのメモリ使用を保証し、ワークロードとノードの可用性を向上させます。この機能はTencent Cloudによって提案され、コミュニティに貢献します。

クラスターのseccompデフォルト設定

1.22ではkubeletにSeccompDefaultのalpha機能が導入されます。--seccomp-defaultのパラメータおよび設定を結合します。kubeletはUnconfinedではなくRuntimeDefault seccomp設定を使用するため、ワークロードの安全性が向上します。

その他の更新

GAの機能:
1.21: EndpointSlice,Sysctls,PodDisruptionBudget
1.22: CSIServiceAccountToken
Beta段階に進んだ機能:
1.21: TTLAfterFinished
1.22: SuspendJob,PodDeletionCost,NetworkPolicyEndPort
1.22では新しいスケジューラスコア評価プラグインNodeResourcesFitが導入され、 NodeResourcesLeastAllocatedNodeResourcesMostAllocatedRequestedToCapacityRatioの3つのプラグインを代替するために使用されます。
1.22から、alpha機能のAPIServerTracingが有効化されると、apiserverは分散型追跡をサポートします。--service-account-issuerのパラメータで複数のissuerの設定をサポートし、issuerを変更した場合、中断せずにサービスを提供することができます。

破棄および削除

削除されたパラメータおよび機能

1. Service TopologyKeysは破棄されました。Topology Aware Hintsを使用することができます。
2. kube-proxy
1.21から、ipvsモードで、net.ipv4.conf.all.route_localnet=1は自動的に設定されなくなります。アップグレードされたノードはnet.ipv4.conf.all.route_localnet=1を保持しますが、新しいノードはシステムのデフォルト値(一般的には0)を継承します。
--cleanup-ipvsのパラメータを削除しました。--cleanupのパラメータを使用することができます。
3. kube-controller-manager
1.22から、--horizontal-pod-autoscaler-use-rest-clientsのパラメータは削除されました。
--portおよび--addressのパラメータは機能しなくなり、バージョン1.24で削除されます。
4. kube-scheduler:--hard-pod-affinity-symmetric-weightおよび--scheduler-nameのパラメータは1.22から削除され、configファイルを使用して設定することができます。
5. kubelet:DynamicKubeletConfig機能は破棄されました。デフォルトでオフにされ、kubeletの起動時に--dynamic-config-dirのパラメータが設定されている場合、アラートを受信します。

削除または破棄されたバージョン

1. CronJob batch/v2alpha1バージョンは1.21から削除されます
2. 1.22から以下のタイプのBeta APIが削除されます。詳細については、Kubernetes公式サイトドキュメントをご参照ください。
rbac.authorization.k8s.io/v1beta1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
extensions/v1beta1およびnetworking.k8s.io/v1beta1 ingress API

Changelogs

1.20 changes since 1.18

重大な更新

新版のCronJobコントローラ

1.20では新版のCronJobコントローラが導入され、informerメカニズムによって元のラウンドロビンに代わり、性能を最適化します。kube-controller-manager--feature-gates="CronJobControllerV2=true"を指定することによって有効化します。以降のバージョンでは、デフォルトで新版のコントローラを使用します。

dockershimの使用を停止する

Dockershimは正式に使用が停止されました。kubernetesはDockerへのサポートを停止し、今後のバージョンで削除します。Dockerが生成するOCI基準を遵守したイメージは引き続きCRIに互換性があるランタイムで実行されます。 詳細な情報については、以下をご参照ください。Don't Panic: Kubernetes and Docker , Dockershim Deprecation FAQ

ログの構造化

ログメッセージおよびk8sオブジェクトが参照する構造はいずれも標準化され、ログ解析、処理、保存、照会および分析がより簡単になりました。klogにInfoSErrorSという2つの方法を追加することによってログの構造化をサポートしています。 すべてのコンポーネントに--logging-formatのパラメータを追加します。デフォルト値はtextで、以前の形式を維持します。jsonに設定してログの構造化をサポートしますが、このときこれらのパラメータは機能しません。--add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency

Execが検出するタイムアウト処理

Exec検出のタイムアウトに関する長期的に存在したbugは修復されました。このbugは従来のPod定義に影響する可能性があります。この修復の前に、timeoutSecondsフィールドが指定するタイムアウトが遵守されず、逆に、検出器が無制限に運用され、さらにその設定された期限時間を超え、結果が返されるまで行われています。今回の変更後、値を指定していない場合、探索はデフォルトで1秒のみ適用されています。探索の実行が消費する時間が1秒を超えた場合、従来のPod定義を変更し、指定のtimeoutSecondsフィールドを表示する必要があります。今回の修復ではさらに名称が ExecProbeTimeoutというスイッチを追加し、以前の行動を保持できるようにします(後続のリリース版では、この機能はロックされ、削除されます)。以前の行動を保持するには、ExecProbeTimeoutfalseに設定する必要があります。 詳細な情報については、Configure Liveness, Readiness and Startup Probes - Configure Probesをご参照ください

ボリュームスナップショット操作機能GA

この機能はボリュームスナップショット操作をトリガーする標準的方法を提供し、ユーザーが移植可能な方式で任意のKubernetes環境およびサポートされているストレージprovider上でスナップショットの操作を統合することを可能にします。 また、これらのKubernetesスナップショットプリミティブを基礎とし、Kubernetesが高度なエンタープライズレベルストレージ管理機能(アプリケーションプログラムまたはクラスターレベルのバックアップソリューションを含む)を開発する機能を使用可能にします。 スナップショットをサポートするには、Kubernetesクラスターによるスナップショットコントローラのデプロイ、スナップショットCRDおよび検証Webhook、およびスナップショット機能をサポートするCSIドライバが必要であることにご注意ください。

kubectl debugはbeta段階に進みました

kubectl alpha debugコマンドは beta段階に進み、kubectl debugに置換されました 。この機能は直接kubectlから一般的なデバッグ作業を行うことをサポートし、以下が含まれます。
その他のコンテナイメージまたはコマンドを使用してPodのレプリカを作成し、起動時にクラッシュするワークロードをトラブルシューティングします。
Podの新しいレプリカ内または一時コンテナ内に、デバッグツールを含む新しいコンテナを追加する方式によって、distrolessなどのデバッグツールを含まないコンテナにトラブルシューティングを行います。(一時コンテナEphemeralContainersはAlpha機能です。デフォルトでは有効化されていません)
ホストのネームスペース内で実行するコンテナを作成してホストのファイルシステムにアクセスすることによって、ノード上でトラブルシューティングすることができます。 新しい内蔵コマンドとして、kubectl debugはいずれかの「debug」という名前のkubectlプラグインより優先されるため、影響を受けるプラグインをリネームする必要があることにご注意ください。 kubectl alpha debugは使用が停止され、今後のバージョンで削除されます。kubectl debugに置換する必要があります 。詳細な情報については、Debug Running Podsをご参照ください

API優先度および公平性機能(API Priority and Fairness)はbeta段階に進みました

1.18で導入されるAPI Priority and Fairness機能は、バージョン1.20ではデフォルトで有効化され、kube-apiserverが優先度に応じて渡すリクエストを分類できるようにします。

PIDリソース制限機能GA

SupportNodePidsLimit(ノードからPodのPID隔離)および SupportPodPidsLimit(各PodのPIDの機能を制限)はいずれもGA段階に進みました。

alpha機能:ノードのグレースフルシャットダウン

ユーザーおよびクラスター管理者はいずれもPodが想定のPodライフサイクルを遵守することを期待し、Podの終了を含みます。しかしノードのシャットダウン時、Podは想定のPod終了ライフサイクルに従わず、かつ正常に終了しないことがあり、これはワークロードのいくつかの問題を引き起こす可能性があります。1.20ではalphaのGracefulNodeShutdown機能が追加されました。kubeletはノードのシステムシャットダウンイベントを監視し、それによってシステムのシャットダウン中にPodをグレースフルシャットダウンします。

CSIVolumeFSGroupPolicyはbeta段階に進みました

CSIDriversはfsGroupPolicyフィールドを使用することによってmount時のオーナーおよび権限の変更をサポートするかどうかを制御します。(ReadWriteOnceWithFSType,File,None)

ConfigurableFSGroupPolicyはbeta段階に進みました

非再帰設定fsgroup - PodFSGroupChangePolicy = OnRootMismatchをサポートしています

その他の更新

cloud controller managerコンポーネントを追加しました。
GAに達した機能:
RuntimeClassnode.k8s.io/v1beta1は破棄されました。node.k8s.io/v1を使用してください
SCTPSupport
Windows containerdのサポート
Ingress networking.k8s.io/v1beta1(バージョン1.22で削除予定)を破棄し、networking.k8s.io/v1に置換します。
seccomp seccompの関連するアノテーションseccomp.security.alpha.kubernetes.io/podおよびcontainer.seccomp.security.alpha.kubernetes.io/... は破棄されました(バージョン1.22で削除予定)。Podおよびcontainer spec内で指定以下のフィールドを直接指定することができます。
securityContext:
seccompProfile:
type: RuntimeDefault|Localhost|Unconfined ## choose one of the three
localhostProfile: my-profiles/profile-allow.json ## only necessary if type == Localhost
K8sはアノテーションおよびフィールドを自動変換します。追加の操作によって変換を行う必要はありません。
ノードのAPIアクセス権限の制限 Node認証モードに関連する機能をすべて実現します。
Event APIの再構築 Eventがシステムの性能に与える影響を緩和し、より多くのフィールドを追加することによってより有用な情報を提供するために、Event APIを再設計します。この作業は1.19で完了します。
CertificateSigningRequest API 以前のcertificates.k8s.io/v1beta1以外に、CertificateSigningRequestにバージョンcertificates.k8s.io/v1を追加しました。 certificates.k8s.io/v1を使用する時は、
spec.signerNameを指定する必要があります。kubernetes.io/legacy-unknownを使用することはできません 。
spec.usagesを指定する必要があります。重複する値を含むことはできず、値は既知のusageのみです。
status.conditions[*].statusを指定する必要があります。
status.certificateはPEMコーデックであり、CERTIFICATEブロックのみを含む必要があります。
Beta段階に進んだ機能: 以下の機能はBeta段階に進みました。デフォルトで有効化されます。
EndpointSliceProxying kube-proxyはEndpointsではなくEndpointSlicesから情報を読み取ります。これによって大幅に大きなクラスターの拡張性を改善し、今後の新機能の追加を容易にします(例:トポロジー感知ルーティング)
KubeSchedulerConfiguration
HugePageStorageMediumSize
ImmutableEphemeralVolumes SecretおよびConfigMapボリュームはimmutableとしてマークすることができ、大量のSecretおよびConfigMapボリュームがある場合、apiserverに対する負荷を大幅に減少させることができます
NodeDisruptionExclusion
NonPreemptingPriority
ServiceNodeExclusion
ServiceAccountIssuerDiscovery

破棄および削除

バージョンの破棄

バージョンの破棄
新しいバージョン
apiextensions.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1beta1
apiregistration.k8s.io/v1
authentication.k8s.io/v1beta1
authentication.k8s.io/v1
authorization.k8s.io/v1beta1
authorization.k8s.io/v1
autoscaling/v2beta1
autoscaling/v2beta2
coordination.k8s.io/v1beta1
oordination.k8s.io/v1
storage.k8s.io/v1beta1
storage.k8s.io/v1

kube-apiserver

1. componentstatusAPIは破棄されました。このAPIはetcd、kube-scheduler、kube-controller-managerの実行ステータスを提供するために使用されますが、これらの条件下でのみ動作できます。これらのコンポーネントとapiserverは1つのノードで実行されます。e-schedulerおよびkube-controller-managerは安全ではないヘルスチェックポートを公開しました。 このAPIを破棄すると、etcdのヘルスチェックはkube-apiserverのヘルスチェック内に含まれます。kube-scheduler/kube-controller-managerはそれぞれのヘルスチェックインターフェースをチェックできます。
2. apiserverは安全ではないポートを監視しなくなります。 --addressおよび--insecure-bind-addressのパラメータは設定できますが無効になります。--portおよび--insecure-portのパラメータは0にのみ設定できます。これらのパラメータはバージョン1.24で削除されます。
3. TokenRequestおよびTokenRequestProjectionはGAに進みました。kube-apiserverは以下のパラメータを設定する必要があります。
--service-account-issuerは、このクラスターAPI Serverの固定されたURLを識別します。
--service-account-key-fileは、1つまたは複数のtokenを検証する公開鍵です。
--service-account-signing-key-fileは、service accountの秘密鍵を発行し、kube-controller-manager--service-account-private-key-fileとパラメータは同じファイルを使用します。

kubelet

1. 以下のパラメータは削除されます。
--seccomp-profile-root
--cloud-provider--cloud-config は、configに置換されます
--really-crash-for-testing , --chaos-chance
2. 破棄されたmetrics/resource/v1alpha1 endpointは削除されました。 metrics/resourceを使用してください。

その他の削除

failure-domain.beta.kubernetes.io/zone およびfailure-domain.beta.kubernetes.io/region タグは破棄されました。topology.kubernetes.io/zoneおよびtopology.kubernetes.io/region によって代替してください。すべてのfailure-domain.beta...というプレフィックスのタグはいずれも対応するtopology...から始まるタグによって代替する必要があります。
PodPresetは削除されました。webhookを使用することによってこの機能を実現することができます。
basic authの認証方式をサポートしなくなります。
ワークロード内で直接Tencent Cloudハードディスクストレージ (cbs inline)を使用してマウントすることをサポートしなくなります。
説明
1.18から1.20にアップグレードする過程でCSI一時ボリューム (csi inline)に対するマウントの成功が保証できなくなります。業務でCSI一時ボリュームを使用する場合、持続的ボリュームストレージに変換してからアップグレードすることをお勧めします。

Changelogs

1.18 changes since 1.16

重大な更新

cloud providerタグ機能は安定(GA)段階に達しました

破棄されるタグおよび新しいタグは下表に示すとおりです。
破棄されるタグ
新しいタグ
beta.kubernetes.io/instance-type
node.kubernetes.io/instance-type
failure-domain.beta.kubernetes.io/region
topology.kubernetes.io/region
failure-domain.beta.kubernetes.io/zone
topology.kubernetes.io/zone

ボリュームスナップショット(Volume Snapshot)機能はBeta段階に進みました

VolumeSnapshotDataSourceはデフォルトでオンになっています。詳細については、releasing CSI volume snapshots to betaをご参照ください。

CSI MigrationはBeta段階に進みました

CSIMigrationはデフォルトでオンになっています。詳細については、CSI migration going to betaをご参照ください。

KubernetesトポロジーマネージャーはBeta版になりました

トポロジーマネージャー機能(TopologyManager)は1.18でBeta段階に進みました。CPUとその他のデバイス(例:SR-IOV-VF)のNUMAアライメントを実現し、ワークロードが低遅延の動作シナリオをサポートできるようにします。 トポロジーマネージャーを導入する前は、CPUとデバイスマネージャーは互いに独立してリソース割り当ての決定をすることしかできなかったため、マルチソケットCPUシステム内で理想的なリソース割り当て結果を得ることができず、遅延に敏感なアプリケーションの性能に影響を与える可能性がありました。

Serverside ApplyはBeta 2段階に進みました

Server-side ApplyはKubernetesバージョン1.16でBeta版にアップグレードされ、1.18では2つ目のBetaバージョン(ServerSideApply)に進みました。このバージョンではすべての新しいKubernetesオブジェクトフィールドの変化を記録および管理し、ユーザーがリソースの動向を理解することを保証します。

IngressClassのリソース

IngressClassリソースはKubernetesクラスター内のIngressコントローラタイプを記述します。IngressリソースにingressClassNameフィールドが追加され、IngressClassを使用するコントローラ名称を設定し、破棄されたkubernetes.io/ingress.classタグを代替するために使用されます。

その他の更新

Node Local DNSCacheはGAに到達しました。
IPv6はBeta段階に進みました。
kubectl debugは、Alpha機能です。
Windows CSI supportは、Alpha機能です。
ImmutableEphemeralVolumesは、Alpha機能です(変更不可のConfigMapおよびSecretをサポートし、対応するvolumeは更新されません)。
以下の機能はGAに達しました。
ScheduleDaemonSetPods
TaintNodesByCondition
WatchBookmark
NodeLease
CSINodeInfo
VolumeSubpathEnvExpansion
AttachVolumeLimit
ResourceQuotaScopeSelectors
VolumePVCDataSource
TaintBasedEvictions
BlockVolumeCSIBlockVolume
Windows RunAsUserName
Beta段階に進んだ機能:
EndpointSlices:デフォルトでオフ
CSIMigrationAWS:デフォルトでオフ
StartupProbe
EvenPodsSpread

破棄および削除

削除された機能

以下の機能は削除されます。デフォルトで有効化され、設定できません。
GCERegionalPersistentDisk
EnableAggregatedDiscoveryTimeout
PersistentLocalVolumes
CustomResourceValidation
CustomResourceSubresources
CustomResourceWebhookConversion
CustomResourcePublishOpenAPI
CustomResourceDefaulting

その他の削除

内蔵のcluster roleを削除する。
system:csi-external-provisioner
system:csi-external-attacher

破棄された機能スイッチおよびパラメータ

デフォルトのservice IP CIDR(10.0.0.0/24)は破棄されました。kube-apiserverの--service-cluster-ip-rangeによってパラメータを設定する必要があります。
APIグループrbac.authorization.k8s.io/v1alpha1および rbac.authorization.k8s.io/v1beta1は破棄されます。バージョン1.20で削除される予定です。rbac.authorization.k8s.io/v1に移行してください。
CSINodeInfo機能は破棄されます。この機能はGAに達し、デフォルトでオンになっています。

パラメータおよびその他の変更

kube-apiserver

--encryption-provider-config:設定ファイル内でcacheSize: 0を指定した場合、1.18以前のバージョンは1000個のkeyをキャッシュするように自動的に設定されますが、バージョン1.18では設定検証エラーを報告します。cacheSizeを負の値に設定することによってキャッシュをオフにすることができます。
--feature-gates:以下の機能はデフォルトでオンになり、コマンドラインによる設定はサポートされなくなります。
PodPriority
TaintNodesByCondition
ResourceQuotaScopeSelectors
ScheduleDaemonSetPods
以下のリソースバージョン(group version)はサポートしていません。
apps/v1beta1およびapps/v1beta2apps/v1を使用してください。
このうち、extensions/v1beta1
daemonsetsdeploymentsおよびreplicasetsは、apps/v1を使用してください。
networkpoliciesnetworking.k8s.io/v1を使用してください。
podsecuritypoliciespolicy/v1beta1を使用してください。

kubelet

--enable-cadvisor-endpoints:このパラメータはデフォルトでオフです。cAdvisor v1 Json APIにアクセスする必要がある場合、有効にする必要があります。
パラメータ--redirect-container-streamingは破棄され、今後のバージョンで削除されます。1.18のみデフォルト行動(kubeletによって streamingリクエストを代理)をサポートします。--redirect-container-streaming=trueに設定した場合、削除する必要があります。
metrics endpoint /metrics/resource/v1alpha1を破棄します。/metrics/resourceを使用してください。

kube-proxy

以下のパラメータを破棄します。
--healthz-portを破棄します。--healthz-bind-addressを使用してください。
--metrics-portを破棄します。--metrics-bind-addressを使用してください。
機能スイッチEndpointSliceProxying(デフォルトではオフ)を追加することによってkube-proxy内でEndpointSlicesを有効化するかどうかを制御します。機能スイッチEndpointSliceはkube-proxyの行動に影響しません。
以下のパラメータを追加してipvs接続のタイムアウトを設定します。
--ipvs-tcp-timeout
--ipvs-tcpfin-timeout
--ipvs-udp-timeout
iptablesモードにIPv4/IPv6デュアルプロトコルスタックのサポートを追加しました。

kube-scheduler

scheduling_duration_seconds指標は破棄されます。
scheduling_algorithm_predicate_evaluation_secondsは破棄され、 framework_extension_point_duration_seconds[extension_point="Filter"]に置換されます
scheduling_algorithm_priority_evaluation_secondsは破棄され、framework_extension_point_duration_seconds[extension_point="Score"]に置換されます
スケジューラPolicy API内でAlwaysCheckAllPredicatesは破棄されます。

-enable-profilingパラメータ

kube-apiserverkube-controller-managerおよびkube-schedulerをアライメントするために、デフォルトでprofilingをオンにします。profilingをオフにする必要がある場合、パラメータ--enable-profiling=falseを指定する必要があります。

kubectl

破棄された--include-uninitializedのパラメータを削除します。
kubectlおよびk8s.io/client-go はデフォルトでhttp://localhost:8080を apiserverのアドレスとして使用しなくなります。
kubectl runはPodの作成をサポートし、以前破棄されたgeneratorを使用してその他のタイプのリソースを作成することはサポートしていません。
破棄されたkubectl rolling-updateコマンドを削除するには、rolloutコマンドを使用してください。
–dry-runは3つのパラメータ値 clientservernoneをサポートしています。
–dry-run=serverはコマンド:applypatchcreaterunannotatelabelsetautoscaledrainrollout undoexposeをサポートしています。
新しいkubectl alpha debugコマンドは、Pod内に一時的コンテナを追加してデバッグおよびトラブルシューティングを行うことができます(1.16で導入されるEphemeralContainers機能を有効化する必要があります)。

hyperkube

HyperkubeはGoコードからbashスクリプトに変更されました。

Changelogs

1.16 changes since 1.14

重大な更新

クラスターの安定性および可用性の改良

ベアメタルクラスターツールおよびHAなど生産に使用可能な機能はいずれも改善および強化されます。 kubeadmのHAに対するサポートはbeta段階に進みました。ユーザーはkubeadm initおよびkubeadm joinコマンドを使用して可用性の高いコントロールパネルをデプロイすることができます。証明書管理はより安定して堅牢になり、kubeadmはクラスターのupdate時に、証明書は有効期限が切れる前にシームレスにすべての証明書を更新します。詳細については、pr357およびpr970をご参照ください。

CSIの持続的改良

ストレージSIGは引き続き内蔵ストレージプラグインのCSIインターフェースへの移行に取り組みます。内蔵ストレージプラグインのサイズ調整をサポートし、インラインストレージボリュームなどの機能は、さらにストレージボリュームクローンのように、オリジナルのKuebernetesストレージのサブシステムに存在していなかったalpha機能を導入しました。 ストレージボリュームクローンはユーザーが新しいストレージボリュームを設定する時に、別のPVC を「DataSource」として指定できるようにします。下層ストレージシステムがこの機能をサポートし、そのCSI駆動プログラムが 「CLONE_VOLUME」機能を実現する場合、新しいストレージボリュームはソースストレージボリュームのクローンになります。詳細については、pr625をご参照ください。

機能

GAに達した機能:
CRD
Admission Webhook
GCERegionalPersistentDisk
CustomResourcePublishOpenAPI
CustomResourceSubresources
CustomResourceValidation
CustomResourceWebhookConversion
CSI基準でボリュームサイズの調整をサポートする機能はBeta段階に進みました。

一般的な更新

KubernetesコアコードはGoモジュールをサポートしています。
cloud-providerコード抽出および組織の準備を継続します。cloud-providerコードはkubernetes/legacy-cloud-providersに移動され、その後の削除と外部利用を可能にします。
新しいalpha版スケジューリングフレームワークをリリースし、プラグインの開発及び管理に使用され、スケジューラの機能を拡張します。詳細については、pr624をご参照ください。
extensions/v1beta1、apps/v1beta1およびapps/v1beta2のAPIは引き続き停止します。これらの拡張はバージョン1.16で完全に廃止されます。
KubeletにTopology Managerコンポーネントを追加し、リソース割り当ての決定を調整することを目的とし、リソース割り当てを最適化します。
IPv4/IPv6デュアルスタックをサポートし、同時にPodとサービスにv4およびv6のアドレスを割り当てることができます。
alpha機能のAPI Serverネットワークプロキシ。
クラウドコントローラマネージャーのマイグレーションにより多くの拡張オプションを提供します。
extensions/v1beta1、apps/v1beta1およびapps/v1beta2 APIを使用停止します。

既知の問題

バージョン1.15で--log-fileのパラメータを使用するとログが同一のファイルに複数回書き込まれる問題が存在します。詳細については、pr78734をご参照ください。

更新についての注意事項

クラスター
以下のタグはノード上に設定されません。beta.kubernetes.io/metadata-proxy-readybeta.kubernetes.io/metadata-proxy-readyおよびbeta.kubernetes.io/kube-proxy-ds-ready
ip-mask-agentnode.kubernetes.io/masq-agent-ds-readyをnodeセレクターとして使用し、beta.kubernetes.io/masq-agent-ds-readyは使用しません。
kube-proxynode.kubernetes.io/kube-proxy-ds-readyをnodeセレクターとして使用し、beta.kubernetes.io/kube-proxy-ds-readyは使用しません。
metadata-proxycloud.google.com/metadata-proxy-readyをnodeセレクターとして使用し、beta.kubernetes.io/metadata-proxy-readyは使用しません。
API Machinery k8s.io/kubernetesおよびその他のリリースされたコンポーネントは、k8s.io/client-goおよびk8s.io/apiなどを含み、現時点でGoモジュールファイルを含み、依存ライブラリのバージョン情報を含みます。Goモジュール方式でk8s.io/client-goを使用する場合、go-modulesおよびpr74877をご参照ください。
Apps hyperkubeの短いエイリアスはコードから削除され、hyperkube dockerイメージをコンパイルする時はこれらのエイリアスを作成します。詳細については、pr76953をご参照ください。
Lifecycle
破棄されたkubeadm v1alpha3の設定はすべて削除されました。
kube-up.shはcentosおよびlocalをサポートしなくなります。
Storage
CSIはボリューム Node.Status.Volumes.Attached.DevicePathのフィールドを設定しなくなります。このフィールドを更新する外部コントローラが必要になります。
alphaバージョンのCRDは削除されました。
デフォルトでStorageObjectInUseProtection admission プラグインを有効化します。事前にこのプラグインを有効化していない場合、クラスターの行動に変化が発生する可能性があります。
CSI driverがPodInfoOnMountを有効化すると、volumeのコンテキストに新しいパラメータ:csi.storage.k8s.io/ephemeralを追加します。driverが NodePublishVolumeを実現する時に、個別に現在のvolumeが一時的ストレージであるか持続的であるかを判断できるようにします。詳細については、pr79983をご参照ください。
VolumePVCDataSource(ストレージボリュームクローン機能)はbeta段階に進みました。詳細については、pr81792をご参照ください。
内蔵およびCSI volumeのlimitを1つのスケジューラpreidicateに統合します。詳細については、pr77595をご参照ください。
kube-apiserver
パラメータ--enable-logs-handlerを破棄し、v1.19で削除される予定です。
--basic-auth-fileおよび対応する認証モードは破棄され、今後削除される予定です。
デフォルトのservice IP CIDR(10.0.0.0/24)は破棄され、半年後または2つのrelease後に削除される予定です。--service-cluster-ip-rangeのパラメータを使用することによってserviceのIPセグメントを設定する必要があります。
kube-scheduler v1beta1 Events APIを使用します。scheudlerイベントを消費するツールはv1beta1 Event APIを使用する必要があります。
kube-proxy
パラメータ--conntrack-maxを削除します(--conntrack-minおよび--conntrack-max-per-coreによって代替できます)。
パラメータ --cleanup-iptablesを削除します。
--resource-containerを削除します。
kubelet
パラメータ --allow-privileged--host-ipc-sources--host-pid-sourcesおよび--host-network-sourcesを削除します(PodSecurityPolicyのアドミッションコントローラによって代替できます)。
cAdvisor JSONインターフェースを破棄します。
--containerizedを削除します。
--node-labels パラメータによってkubernetes.io-を設定するかk8s.io-がプレフィックスの許可されていないタグはサポートしていません 。
kubectl
kubectl scale jobを削除します。
kubectl execコマンドの--pod/-pのパラメータを削除します。
kubectl convertコマンドを削除します。
--include-uninitializedを削除します。
kubectl cpはコンテナ内のシンボリックリンクをコピーすることをサポートしていません。以下のコマンドを使用して代替することができます。
local to pod:tar cf - /tmp/foo | kubectl exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/bar
pod to local:kubectl exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar
kubeadm
kubeadm upgrade node configおよびkubeadm upgrade node experimental-control-planeは破棄され、kubeadm upgrade nodeによって代替されます。
パラメータ --experimental-control-planeは破棄され、--control-planeによって代替されます。
パラメータ--experimental-upload-certsは破棄され、--upload-certsによって代替されます。
コマンドkubeadm config uploadは破棄され、kubeadm init phase upload-confiによって代替されます。
CoreDNSはreadyプラグインを使用してReadinessチェックを行います。
proxyプラグインは破棄され、 forwardプラグインによって代替されます。
kubernetesプラグインはresyncperiodオプションを削除します。
upstreamオプションを削除します。指定した場合、無視されます。

Changelogs

1.14 changes since 1.12

重大な更新

kubeadmを使用してクラスター管理を簡略化します。

一般的な更新

dry-runはbeta段階に進みました(dry-runによってユーザーは実際のAPIリクエストをシミュレートすることができ、実際にクラスターの状態を変更することはありません)。
kubectl diffはbeta段階に進みました。
kubectlプラグイン登録はstableに入りました。
kubeletプラグインメカニズムはbeta段階に進みました。
CSIPersistentVolumeはGAに進みました。
TaintBasedEvictionはbeta段階に進みました。
kube-schedulerはvolume topologyを感知し、stableに進むことができます。
out-of-tree CSI Volume pluginsをサポートし、stableに進みます。
サードパーティデバイスのモニタリングプラグインをサポートしています。
kube-scheduler subnet feasibilityはbeta段階に進みました。
Pod Readyはカスタム検出条件をサポートしています。
NodeメモリはHugePageをサポートしています。
RuntimeClassはbeta段階に進みました。
Node OS/Arch labelsはGAに進みました。
node-leasesはbeta段階に進みました。
kubelet resource metrics endpoint はalpha段階に進みました。prometheusによるデータの収集をサポートしています。
runAsGroupはbeta段階に進みました。
kubectl apply server-sideはalpha段階に進み、サーバーでapply操作を実行することができます。
kubectlはkustomizeをサポートしています。
Pod内でresolv.confを設定することをサポートしています。
CSI volumesはresizingをサポートしています。
CSIはtopologyをサポートしています。
volume mountはサブパスパラメータの設定をサポートしています。
CSIはベアブロックデバイスをサポートしています。
CSIはローカルephemeral volumeをサポートしています。

更新についての注意事項

kube-apiserver
etcd2はサポートされなくなり、デフォルトは--storage-backend=etcd3となります。
パラメータ--etcd-quorum-readは破棄されます。
パラメータ--storage-versionsは破棄されます。
パラメータ--repair-malformed-updatesは破棄されます。
kube-controller-manager パラメータ--insecure-experimental-approve-all-kubelet-csrs-for-groupは破棄されます。
kubelet
パラメータ--google-json-keyは破棄されます。
パラメータ--experimental-fail-swap-onは破棄されます。
kube-scheduler componentconfig/v1alpha1はサポートされなくなります。
kubectl コマンドrun-containerはサポートされなくなります。
taints node.alpha.kubernetes.io/notReadyおよびnode.alpha.kubernetes.io/unreachableはサポートされなくなり、node.kubernetes.io/not-readyおよびnode.kubernetes.io/unreachableに変更されます。

Changelogs

1.12 changes since 1.10

重大な更新

API

CustomResourcesサブリソースは現在beta段階に進み、デフォルトでオンになっています。/statusのサブリソースは.status フィールドを除いて更新できます(以前は.specおよび.metadataのみ更新が可能)。/statusサブリソースを有効化する場合、requiredおよびdescriptionはCRD OpenAPIが schemaを検証するために使用できます。また、ユーザーは複数のバージョンのCustomResourceDefinitionsを作成することができ、自動変換を行う必要はありません。 CustomResourceDefinitionsのspec.additionalPrinterColumnsフィールドによってkubectl getの出力に追加の列を含めることができます。
dry run機能をサポートします。ユーザーがあるコマンドの実行結果を確認できるようにし、実際に関連する変更を送信する必要はありません。

認証の権限承認

RBACアグリゲートClusterRolesはGA段階に進み、client-go credentialsプラグインはBeta段階に進みました。外部プラグインからのTLS認証情報の取得をサポートしています。
審査イベントに以下のようなアノテーションを追加し、ユーザーがより明確に審査を決定する過程を理解できるようにします。
Authorizationコンポーネントはauthorization.k8s.io/decision(authorizationはallowまたはforbidを決定)、および authorization.k8s.io/reason(この決定をする原因)を設定します。
PodSecurityPolicyアドミッションコントローラはpodsecuritypolicy.admission.k8s.io/admit-policyおよびpodsecuritypolicy.admission.k8s.io/validate-policyを設定し、Podアドミッションに関連するポリシー名を含みます(PodSecurityPolicyは同時にhostPathタイプのマウントポイントを読み取り専用モードに制限することができます)。
NodeRestrictionアドミッションコントローラはノードがそれに対応するNodeオブジェクトのテイント情報を変更することを禁止し、ユーザーがより容易にノードのテイント設定状況を制御および追跡できるようにします。

CLIコマンドライン

CLIは新しいプラグインメカニズム、および汎用CLIツールを含む開発ライブラリを提供し、プラグイン開発者がプラグインを開発できるようにします。

ネットワーク

ipvsモードはGA段階に進みました。
CoreDNSはGA段階に進み、kube-dnsを代替します。

ノード

DynamicKubeletConfigはBeta段階に進みました。
cri-tools GA。
PodShareProcessNamespaceはBeta段階に進みました。
Alpha機能を追加しました。RuntimeClass,CustomCFSQuotaPeriod。

スケジューラ

Pod PriorityおよびPreemptionはBeta段階に進みました。
DaemonSet PodのスケジューリングはDaemonSetコントローラによって管理されず、デフォルトのスケジューラによって管理されます。
TaintNodeByConditionはBeta段階に進みました。
ローカルイメージの優先機能はデフォルトでオンになっています。Podをスケジューリングする場合、ローカルですべてまたは一部のPodに必要なイメージをプルするノードはより高い優先度を持ちます。このようにしてPodの起動を高速化させます。

一般的な更新

GA段階に進んだ機能:ClusterRole、StorageObjectInUseProtection。
Beta段階に進んだ機能:外部Cloud Provider。

更新についての注意事項

kube-apiserver
--storage-versionのパラメータは削除され、--storage-versionsに置換されます。同時に--storage-versionsも破棄されます。
--endpoint-reconciler-typeのデフォルト値はleaseに変更されました。
--enable-admission-pluginsを使用する場合、デフォルトで含まれます。--admission-controlのパラメータを使用する場合、表示指定をする必要があります。
kubelet
--rotate-certificatesのパラメータは破棄され、設定ファイルの .RotateCertificatesフィールドに置換されます。
kubectl
run-pod/v1を除き、その他のkubectl runのgeneratorは破棄されました。
kubectl logsは--interactive`のパラメータが削除されました。
--use-openapi-print-columnsは破棄され--server-printに置換されました。

Changelogs

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック