はじめに
このエントリは、Kubernetes 1.10 の CHANGELOG からBefore Upgradingについてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。
- Kubernetes 1.10: 主な変更点 (Major Themes)
- Kubernetes 1.10: Before Upgrading
- Kubernetes 1.10: 既知の問題 (Known Issues) と廃止予定の機能 (Deprecations)
Before Upgrading
-
1.7.14, 1.8.9 1.9.4 からの PVCでsubpathをつかったnodeのアップグレードはサポートされていません。そのようなPodはまずdrainしてください。
-
Dockerの最小サポートバージョンは1.11です。1.10以下を使っている場合は先にアップグレードしてください。(#57845, yujuhong)
-
CRIがv1alpha1からv1alpha2になりました。CRIを実装しているランタイムのバージョンアップが必要です。コンテナのnamespaceの指定方法がbooleanから列挙型に変更となりました。この変更は非互換です。containerdなどのCRIの実装は新しいAPIバージョン用にアップデートが必要です。(#58973, verb)
-
GCEのCOS imageでのFlexvolumeプラグインのディレクトリが
/etc/srv/kubernetes/kubelet-plugins/volume/exec
から/home/kubernetes/flexvolume
に変更になりました。(#58171, verult) -
kubeletの設定ファイルのデフォルト値とコマンドラインでのデフォルト値が異なっています。設定ファイルを使うようにアップデートする場合は、デフォルト値の差分を確認してください。例えばauthz modeがコマンドラインで設定した場合はAlwaysAllowがデフォルトですが、設定ファイルの場合はWebhookとなります。 (#59666, mtaufen)
-
[GCP kube-up.sh] kube-envの変数はKubeletのフラグに使われているものを除いては全て設定されなくなりました。kubeletの設定ファイルで設定するようにしてください。(#60020, roberthbailey)
-
[kube-proxy] 設定をJSONやYAMLであたえる時の記載方法がKey-Valueの文字列からMap形式に変更になりました。
KubeProxyConfiguration Before:
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
**featureGates: "SupportIPVSProxyMode=true"**
KubeProxyConfiguration After:
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
**featureGates:**
** SupportIPVSProxyMode: true**
-
kubeconfig
API groupがalphaからbetaになり、名称がkubelet.config.k8s.io
に変更になりました。kubeconfig/v1alpha1
はもう使えないのでkubelet.config.k8s.io/v1beta1
に変更してください。(#53833, mtaufen) -
[kube-apiserver] 実験的なものであった組み込みのKeystone password authenticatorは、拡張機能としての実装があるために削除されました。(#59492, dims)
-
kube-proxy設定の中の
udpTimeoutMilliseconds
がudpIdleTimeout
という名前に変更されました。設定ファイルを書き換えてください。(#57754, ncdc) -
kubeletの
--cloud-providor=auto-detect
機能が削除されました。適切なcloud providerを指定するようにしてください。(#56287, stewart-yu) -
[kube-apiserver] OpenID Connect authenticatorはGoogleのv3 token APIのtokenを受け付けなくなりました。 "https://www.googleapis.com/oauth2/v4/token" を利用するようにしてください。
-
[kube-apiserver] ルートにある
/proxy
というパスは削除されました(v1.2から廃止予定となっていました)/proxy
サブリソースを使うようにしてください。(#59884, mikedanese) -
[kubelet]Evictionの閾値を0%か100%とした場合に無視するようにしました。(#59681, mtaufen)
-
[CustomResourceDefinition] OpenAPI v3のバリデーションスキーマのうち
$ref
を含むものが許可されなくなりました。 アップグレードの前にCRDの定義が$ref
フィールドを含まないようにしてください。(#58438, carlory) -
アップグレード前にnodes, persistentVolumeなどのクラスタスコープのオブジェクトのためのwebhookを確認してください。Webhookの実行が望ましくない場合は設定を削除・変更してください。(#58185, caesarxuchao)
- AdmissionWebhookはバグによりクラスタスコープのリソースについては実施されていませんでした、修正によりクラスタスコープのリソースもAdmissionWebhookの対象となっています。
-
kubectlのgcp auth pluginを使っているGoogle Service Account認証をしている場合は新たに"userinfo.email" scope を要求するようになりました。これによりClusterRoleBindings/RoleBindingsにemailでユーザを指定できるようになりました。(これは今まで数値のIDでしていた場合には破壊的な変更となります。この振る舞いを上書きするためにはKUBECONFIGファイルの
users[*].config.scopes
フィールドにカンマ区切りscopeを記載する必要があります。)これによりGoogle Service Account JSON keyを環境変数GOOGLE_APPLICATION_CREDENTIALS
に設定し、kubeconfigファイルにGKEのmasterのIP+CA証明書の設定を記載しておくと、gcloud CLIを使わずに認証できるようになりました。(#58141, ahmetb) -
kubectl port-forwardの廃止予定だった
-p <pod-name>
フラグは使えなくなりました。単にpod名を引数に書くことで同じことが実現できます。(#59705, phsiao) -
[kubelet] 廃止予定だった
--require-kubeconfig
フラグは削除されました。また--require-kubeconfig=true
が指定され--kubeconfig
が指定されていないときはデフォルト値が使われるようになっていましたが、その機能も削除されました。((#58367, zhangxiaoyu-zidif) -
[kube-apiserver]
--public-address-override
,--address
,--port
は削除されました。代わりにbind-address、insecure-bind-address、insecure-portを使ってください。ただし--insecure-bind-address
,--insecure-port
は廃止予定です。#36604(#59018, hzxuzhonghu) -
[kubelet]アルファの
--init-config-dir
フラグは削除されました。--config
フラグを使ってkubeletの設定ファイルを直接指定してください。(#57624, mtaufen) -
廃止予定だったメンテンスされていないsaltのサポートを終了しました。kuberneetes-salt.tar.gzは今後のリリースのtarballに含まれなくなります。(#58248, mikedanese)
-
廃止予定だったGCEのためのスイッチである
-mode
は削除されました。(#61203)- ( これはkubernetes的に何かを廃止したものではなく、gcloudの廃止予定のスイッチを使わないようにしただけのようです。)
-
不適切に使用されている"manifest"という文言を削除しました。(#60314)
-
https://github.com/kubernetes/kubernetes/issues/49213 sig-cluster-lifecycleはデプロイの自動化をコアリポジトリの外で実施することを決め、段階的に廃止していくことを決めました。
- Remove deprecated ContainerVM support from GCE kube-up. (#58247, mikedanese)
- Remove deprecated kube-push.sh functionality. (#58246, mikedanese)
- Remove deprecated container-linux support in gce kube-up.sh. (#58098, mikedanese)
- Remove deprecated and unmaintained photon-controller kube-up.sh. (#58096, mikedanese)
- Remove deprecated and unmaintained libvirt-coreos kube-up.sh. (#58023, mikedanese)
- Remove deprecated and unmaintained windows installer. (#58020, mikedanese)
- Remove deprecated and unmaintained openstack-heat kube-up.sh. (#58021, mikedanese)
- Remove deprecated vagrant kube-up.sh. (#58118,roberthbailey)
-
DaemonSetControllerとその統合テスト、e2eテストはapps/v1 APIを使うようになりました。必要に応じてスクリプトを更新する必要があります。(#59883, kow3ns)
-
MountPropagation機能がベータとなりました。その結果全てのボリュームはLinuxでは
rslave
としてマウントされます。Linux環境において全てのマウントツリーでこのデフォルトの挙動をするためには、sharebleとしてマークすべきです。(例えばmount --make-rshared /
など)systemdで動作している全てのLinuxディストリビューションではすでにrootディレクトリがrsharedでマウントされているため、何もする必要がありません。systemdのないLinux環境の場合はブート時dockerが起動する前にmount --make-rshared /
を実行することを勧めます。(jsafrane)