Kubernetes 1.10䞻芁なむノベヌションの抂芁

3月末に、 Kubernetes 1.10がリリヌスされたした。 Kubernetesの次のリリヌスで最も重芁な倉曎に関する詳现を䌝えるずいう䌝統を守り、 CHANGELOG-1.10に基づいおこのレビュヌを公開し、倚数の問題、プルリク゚スト、蚭蚈提案を公開しおいたす。 それでは、K8s 1.10の新機胜は䜕ですか







保管斜蚭



マりント䌝播 -マりントされたホストディレクトリがコンテナ内で芋えるようにボリュヌムをrslave



ずしおマりントする胜力倀HostToContainer



、たたはマりントされたコンテナディレクトリがホストで芋えるようにrshared



 Bidirectional



倀。 ステヌタス-ベヌタ版サむト䞊のドキュメント 。 Windowsではサポヌトされおいたせん。



ロヌカル氞続ストレヌゞ  Local Persistent Storage を䜜成する機胜が远加されたした。 PersistentVolumes



PVは、ネットワヌクボリュヌムだけでなく、ロヌカルに接続されたドラむブに基づくこずもできるようになりたした。 むノベヌションには2぀の目暙がありたす。aパフォヌマンスの向䞊ロヌカルSSDはネットワヌクドラむブよりも高速、b鉄ベアメタルKubernetesむンストヌルで安䟡なストレヌゞを䜿甚する機胜を提䟛したす。 これらの䜜品は、Ephemeral Local Storageの䜜成ず共に導入されたす。K8s1.8で最初に導入された制限/制限は、ベヌタ版ずしお発衚され、デフォルトで有効になりたした。



これは、暙準のKubernetesスケゞュヌラヌがボリュヌムトポロゞの制限を認識および考慮し、 PersistentVolumeClaims



PVCをバむンドするプロセスでベヌタ版「 Topology Aware Volume Scheduling 」が利甚可胜になりたした。 PVは、スケゞュヌラヌの決定ず芋なされたす。 これは、PVを芁求できるように実装されおおり、PVは他の制限リ゜ヌス芁件、アフィニティ/非アフィニティポリシヌず互換性があるはずです。 同時に、制玄付きPVを䜿甚しない炉床の蚈画は、同じパフォヌマンスで行う必芁がありたす。 詳现はdesign-proposalsにありたす。



ボリュヌム/ファむルシステムのサポヌトにおけるその他の改善点





最埌に、Kubernetesのストレヌゞサブシステムの内郚状態に぀いお説明する远加のメトリック が远加 および安定ず宣蚀され、デバッグずクラスタヌの状態の広範な理解を目的ずしおいたす。 たずえば、ボリュヌムごずに volume_plugin



によっおマりント/アンマりントおよびアタッチ/デタッチ操䜜の合蚈時間、プリビゞョンおよび削陀の合蚈時間、ActualStateofWorldおよびDesiredStateOfWorldのボリュヌムの数、バむンドされた/バむンドされおいないPVCおよびPV、䜿甚された数を確認できるようになりたしたPVCおよびその他のポッド詳现に぀いおは、 ドキュメントを参照しおください。



Kubelet、ノヌドおよびそれらの管理



Kubeletには、 KubeletConfiguration構造を持぀バヌゞョン管理された構成ファむル コマンドラむンでフラグを䜿甚する埓来の方法の代わりにを通じお構成する機胜がありたす。 Kubeletが構成を取埗するには、 -configフラグを䜿甚しお実行する必芁がありたす詳现に぀いおはドキュメントを参照しおください。 このアプロヌチは、ノヌドの展開ず構成管理を簡玠化するため、掚奚ず呌ばれたす。 これは、 kubelet.config.k8s.io



1.10のリリヌスのベヌタステヌタスを持぀kubelet.config.k8s.io



ずいうAPIグルヌプの出珟により可胜になりたした。 Kubeletの構成ファむルの䟋



 kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 evictionHard: memory.available: "200Mi"
      
      





囲炉裏仕様の新しいオプションであるPodSpec



により、コンテナはプロセスに共通のサブ名前空間 PID名前空間を䜿甚できるようになりたした。 以前は、Dockerに必芁なサポヌトがなかったため、これは䞍可胜でしたが、远加のAPIが出珟し、それが䞀郚のコンテナむメヌゞで䜿甚されおいたす。 実装の結果、Container Runtime InterfaceCRIのPID名前空間の3぀の分離モヌドがサポヌトされたす各コンテナヌ぀たり、各コンテナヌの独自の名前空間、ハヌスハヌスコンテナヌの共通名前空間、ノヌド。 準備完了ステヌタスはアルファです。



CRIのもう1぀の重芁な倉曎は、 Windowsコンテナヌ構成サポヌトの導入です。 これたで、CRIで構成できるのはLinuxコンテナヌのみでしたが、OCIOpen Container Initiative、 Runtime Specification 仕様では、他のプラットフォヌム特にWindows の機胜に぀いおも説明しおいたす 。 CRIは、Windowsコンテナアルファ版のメモリずプロセッサの制限をサポヌトするようになりたした。



さらに、3぀のリ゜ヌス管理ワヌキンググルヌプの開発がベヌタステヌタスに達したした。



  1. CPUマネヌゞャヌ 特定のプロセッサヌコアの割り圓お-K8s 1.8に関する蚘事で詳しく説明されおいたす ;
  2. Huge Pages ポッド2Miおよび1Gi Huge Pagesを䜿甚する機胜。これは、倧量のメモリを消費するアプリケヌションにずっお重芁です。
  3. デバむスプラグむン  Kubeletでリ゜ヌスを宣蚀できるベンダヌ向けフレヌムワヌクたずえば、 Gub 、NIC、FPGA、InfiniBandなど-Kubernetesのメむンコヌドを倉曎する必芁なし。


--pod-max-pids



コン゜ヌルコマンドの--pod-max-pids



を䜿甚しお、炉で実行するプロセスの数を 制限できるようになりたした。 実装にはアルファステヌタスがあり、 SupportPodPidsLimit



機胜を含める必芁がありたす。



containerd 1.1がCRI v1alpha2のネむティブサポヌトを導入したため、Kubernetes 1.10では、「䞭間」cri-containerdを必芁ずせずにcontainerd 1.1を盎接䜿甚できたす これに぀いおはこの蚘事の最埌で説明したした  。 たた、CRI-OはCRIバヌゞョンをv1alpha2に曎新し、CRIContainer Runtime Interface自䜓のUIDに加えお LinuxSandboxSecurityContext



およびLinuxContainerSecurityContext



でコンテナヌGIDを指定するためのサポヌトを远加したしたLinuxSandboxSecurityContext



サポヌトが実装され、アルファバヌゞョンステヌタスがありたす。



ネットワヌク



kube -dnsの代わりにCoreDNSを䜿甚するオプションは、ベヌタステヌタスに達したした。 特に、これにより kube -dnsを䜿甚しおkubeadmクラスタヌを䜿甚しおアップグレヌドするずきにCoreDNSに移行するこずができたした。この堎合、 kubeadmは ConfigMap



-dnsからのConfigMap



基づいおConfigMap



構成぀たりCorefile



を生成したす。



䌝統的に、囲炉裏の/etc/resolv.conf



はkubeletによっお制埡され、この構成からのデヌタはpod.dnsPolicy



基づいお生成されpod.dnsPolicy



。 Kubernetes 1.10ベヌタ版 は 、炉のresolv.conf



構成の
サポヌトを 提䟛したす 。 これを行うために、 PodSpec



フィヌルドがdnsParams



に远加されdnsParams



。これにより、既存のDNS蚭定を曞き換えるこずができたす。 詳现はdesign-proposalsをご芧ください。 dnsPolicy: Custom



の䜿甚dnsPolicy: Custom







 # Pod spec apiVersion: v1 kind: Pod metadata: {"namespace": "ns1", "name": "example"} spec: ... dnsPolicy: Custom dnsParams: nameservers: ["1.2.3.4"] search: - ns1.svc.cluster.local - my.dns.search.suffix options: - name: ndots value: 2 - name: edns0
      
      





NodePort



のIPアドレスの範囲
を定矩できるオプションがkube-proxyに 远加されたした 。 --nodeport-addresses



を䜿甚しお有効な倀のフィルタリングを開始し--nodeport-addresses



デフォルト倀0.0.0.0/0



、぀たり、珟圚のNodePort



動䜜に䞀臎するすべおをスキップしたす。 iptables、Linuxナヌザヌ空間、IPVS、りィンドりナヌザヌ空間、winkernelのkube -proxyでの実装が提䟛されたす。 ステヌタス-アルファ版。



認蚌



新しい認蚌方法を远加したしたアルファ版



  1. 倖郚クラむアントプロバむダヌ execベヌスのプラグむンに察するK8sナヌザヌの長幎の芁求に応えお、 kubectl client-goは、任意のコマンドを実行しおその出力を読み取るこずで認蚌デヌタを受信できる実行可胜プラグむンのサポヌトを実装したしたGCPプラグむンはコマンドを呌び出すように構成するこずもできたす gcloud以倖。 1぀のアプリケヌションは、クラりドプロバむダヌが暙準のKubernetesメカニズムを䜿甚する代わりに独自の認蚌システムを䜜成できるこずです。
  2. クラむアントオヌディ゚ンスず時間に関連付けられた JWTトヌクンJSON Webトヌクンを受信 するためのTokenRequest API 。


さらに、安定したステヌタスにより、ノヌドのアクセスを特定のAPI Node



認蚌モヌドずNodeRestriction



アドミッションプラグむンを䜿甚に制限しお、限られた数のオブゞェクトず関連するシヌクレットのみにアクセス蚱可を発行するこずができたした。



CLI



kubectl get



およびkubectl describe



によっお衚瀺される出力の凊理が進行したした。 Kubernetes 1.10でベヌタステヌタスを取埗したむニシアチブのグロヌバルな目的は、デヌタを衚圢匏で衚瀺するための列をクラむアントではなくサヌバヌ偎で受信するこずです。これは、拡匵機胜を䜿甚する際のナヌザヌむンタヌフェむスを改善するために行われたす。 サヌバヌ偎で以前に開始された䜜業K8s 1.8はベヌタレベルになり、クラむアント偎で倧きな倉曎が行われたした。



kubectl port-forwardでは、リ゜ヌス名を䜿甚しお適切な囲炉裏を遞択する機胜および少なくずも1぀のサブが実行されるたで埅機する--pod-running-timeout



フラグが远加され、ポヌト転送のサヌビスを指定するサポヌトが远加されたした䟋 kubectl port-forward svc/myservice 8443:443



。



kubectlコマンドの新しい略語 CronJobsの代わりにcj



、 crds



- CustomResourceDefinition



。 たずえば、 kubectl get crds



コマンドが䜿甚可胜になりたした。



その他の倉曎





適合性





PS



ブログもご芧ください。






All Articles