はじめに
このエントリは、Kubernetes 1.13 の CHANGELOG から 既知の問題 (Known Issues) と 廃止予定の機能 (Deprecations) についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。
- Kubernetes 1.13: Urgent Upgrade Notes
- Kubernetes 1.13: 既知の問題 (Known Issues) と 廃止予定の機能 (Deprecations)
- Kubernetes 1.13: 主な変更点 (Major Themes)
- Kubernetes 1.13: 新機能 (New features)
既知の問題 (Know Issues)
-
kubelet はドライバの失敗によりプラグインの登録が失敗したとしても、登録を再試行しません。ドライバは kubelet がドライバの登録を再度試みるように、ドライバ登録用のソケットを削除し、再作成する必要があります。単にドライバのコンテナの再起動を行うだけではソケットの再作成のための十分なトリガーにならない可能性があるため、Pod の再起動が必要かもしれません。(#71487)
Note
-
いくつかのケースにおいて、Flex volume のリサイズは、(もしそのリサイズが成功したとしても) 不正確な ”Resizing Condition” の情報を持った PVC を残してしまいます。ユーザは、もしその情報が必要でなかった場合、削除しても構いません。(#71470)
Note
PVC
中に.status.conditions
のResizing
/FileSystemResizePending
が残ったままの状態になっていることがある、ということだと思われます。リサイズが終わったあとでこの情報が残ったままであった場合は、kubectl edit
などで安全に取り除けるようです。 CSI driver-registrar サイドカーコンテナの v1.0.0-rc2 はいくつかの場合に置いて起動に1分以上かかることが知られています。この問題は将来のサイドカーコンテナのリリースで解決されると考えています。解決されたかどうかは、このサイドカーコンテナの将来のリリースノートをご確認ください。(#76)
IPV6-only を使っている場合は、kube-proxy の
proxy-mode=iptables
を使ってください。proxy-mode=ipvs
は動作しないことが知られています。(#68437)
廃止予定の機能 (Deprecations)
-
kube-apiserver
-
--service-account-api-audiences
は非推奨です。代わりに--api-audiences
フラグを利用してください。このフラグはまだ警告とともに利用可能ですが、将来のリリースで削除されます。(#70105, @mikedanese) -
--experimental-encryption-provider-config
は非推奨です。代わりに--encryption-provider-config
フラグを利用してください。このフラグはまだ警告とともに利用可能ですが、1.14 で削除されます。(#71206, @stlaz) - etcd 暗号化機能のベータ移行の一環として、設定ファイルは
--encryption-provider-config
によって参照されるようになり、kind: EncryptionConfiguration
とapiVersion: apiserver.config.k8s.io/v1
を利用することになります。kind: EncryptionConfig
とapiVersion: v1
のサポートは非推奨となり、将来のリリースで削除されます。 (#67383, @stlaz) -
--deserialization-cache-size
フラグは非推奨です、将来のリリースで削除されます。etcd2 のストレージバックエンドが削除されたため、このフラグは何もしません。(#69842, @liggitt) -
Node
authorization モードは kubelet が自身の Node API オブジェクトを削除することを許可しなくなりました。(1.11以前は、Cloud Provider の node ID 変更に関連した特殊な状況下で、kubelet が自身の Node オブジェクトを起動時に、削除および再作成を試みていました。) (#71021, @liggitt) - ビルトインの
system:csi-external-provisioner
とsystem:csi-external-attacher
ClusterRole は非推奨となり、将来のリリースでは自動で作成されなくなります。CSI の各ドライバは自身で必要な権限を持った RBAC リソースを作成するようにしてください。(#69868, @pohly) - ビルトインの
system:aws-cloud-provider
ClusterRole は非推奨となり、将来のリリースでは自動で作成されなくなります。AWSクラウドプロバイダを利用しているシステムは、kube-system
ネームスペースのaws-cloud-provider
サービスアカウントに対して必要な権限を与えてください。 (#66635, @wgliang)
-
-
kubelet
- kubelet plugin の登録時に使われているベータの plugin registration ディレクトリである
{kubelet_root_dir}/plugins/
ディレクトリの利用は非推奨になりました、{kubelet_root_dir}/plugins_registry/
を利用してください。古いディレクトリのサポートは v1.15 で削除が予定されています。デバイスプラグインおよび CSI ストレージドライバは v1.15 の前に新しいディレクトリに移行してください。CSI ストレージドライバの 0.x バージョンのみがこの古いディレクトリを利用することが許可されています。(#70494 by @RenaudWasTaken and #71314 by @saad-ali) - CSI 1.0 API のリリースとともに、0.3 を使っている CSI ドライバーと古い CSI APIリリースのサポートを非推奨とします。これらは Kubernetes v1.15 で削除が予定されています。CSI ドライバはCSI 1.0 APIを利用するようアップデートし、クラスタ内の全てのノードが 1.13 以上になり次第、新しい kubelet plugin の登録ディレクトリ (
{kubelet_root_dir}/plugins_registry/
) に配備してください。 -
kubernetes.io/
とk8s.io/
プレフィックスのついたラベルを--node-labels
を利用して設定した場合、将来のリリースでNodeRestriction
admission プラグインの制限の対象となります。許可されるラベルについては admission plugin のドキュメントをご覧ください。(#68267, @liggitt)Note
NodeRestriction
addmission プラグイン はkubelet
に対して Node や Pod リソースに対する権限を制限するプラグインです。kubelet
起動時に--node-labels
をつけることでノードにラベルをつけることができるのですが、kubernetes.io/
とk8s.io/
プレフィックスのついたラベルに関しては自由につけることができず、これから許可されたり制限されたりするとのことです。(例えばk8s.io/hoge
は ok だけどk8s.io/fuga
は無理など。) その制限内容はまだ決まっていないようなので、適当にラベルをつける場合はこのようなプレフィックスを避けるのが無難でしょう。
- kubelet plugin の登録時に使われているベータの plugin registration ディレクトリである
-
kube-scheduler
-
以下の機能が GA となりました。それに伴い、関連した Feature gates が非推奨となり将来のリリースで削除されます。
- CSIPersistentVolume
- GCERegionalPersistentDisk
- KubeletPluginsWatcher
- VolumeScheduling
-
kubeadm
- DynamicKubeletConfig feature gate が非推奨になりました。機能は
kubeadm alpha kubelet enable-dynamic
コマンドでまだ利用することができます。 -
kubeadm config print-defaults
は非推奨になりました。代わりにkubeadm config print init-defaults
とkubeadm config print join-defaults
を利用してください。(#69617, @rosti) -
v1alpha3
の設定ファイルフォーマットのサポートは非推奨となり、1.14 で削除されます。kubeadm config migrate
を利用してv1alpha3
の設定ファイルをv1beta1
に移行してください。v1beta1
にはイメージレポジトリの管理やアドオンの設定などの改善が含まれています。詳しくはv1beta1
の ドキュメントを参照 してください。
- DynamicKubeletConfig feature gate が非推奨になりました。機能は
CSI volumes の
node.status.volumes.attached.devicePath
フィールドは非推奨です、将来のリリースでは設定されなくなります。(#71095, @msau42)-
kubectl
-
e2e テスト実行時の未定義なプロバイダ名の指定のサポートは非推奨となりました、将来のリリースで削除されます。代わりに SSH アクセスをしない場合は
--provider=skeleton
を、ローカルクラスターに対して SSH アクセスを行う場合は--provider=local
を指定してください。(#70141, @pohly)
Note
local
とskelton
の差が謎。定義と SSH 関連の実装 は以下のようになっているようだが…。
RegisterProvider("local", func() (ProviderInterface, error) {
return NullProvider{}, nil
})
RegisterProvider("skeleton", func() (ProviderInterface, error) {
return NullProvider{}, nil
})
switch provider {
case "gce", "gke", "kubemark":
keyfile = "google_compute_engine"
case "aws":
// If there is an env. variable override, use that.
aws_keyfile := os.Getenv("AWS_SSH_KEY")
if len(aws_keyfile) != 0 {
return sshutil.MakePrivateKeySignerFromFile(aws_keyfile)
}
// Otherwise revert to home dir
keyfile = "kube_aws_rsa"
case "local", "vsphere":
keyfile = os.Getenv("LOCAL_SSH_KEY") // maybe?
if len(keyfile) == 0 {
keyfile = "id_rsa"
}
case "skeleton":
keyfile = os.Getenv("KUBE_SSH_KEY")
if len(keyfile) == 0 {
keyfile = "id_rsa"
}
default:
return nil, fmt.Errorf("GetSigner(...) not implemented for %s", provider)
}