
この記事では、さまざまな機能を実装し、日常業務に役立つように設計されたKubernetes用のサードパーティのオープンソースユーティリティについて簡単に説明します。 それらの4つは英語の資料から取られ、構成の自動更新、コンテナー/ポッド/ノードの負荷の追跡、コンテキストの切り替え、DINDクラスターの作成(DockerのDocker)に役立ちます。 残りはGitHubにあり、短いリストが表示されます。
キューブアプライヤー
- Github
- ライセンス:Apache License 2.0。
- 要件:Go 1.7以降、Docker 1.10以降、Kubernetes 1.2.x — 1.4.x(1.5および1.6のサポートには一時的な問題があります )。
Boxオンラインストレージサービスは、Kubernetesでの展開に使用されるいくつかのツールのソースコードを開きます。 4月に、そのようなプロジェクトの1つ-kube-applier が発表されました 。
Kube-applierはKubernetesでサービスとして起動し、GitリポジトリからKubernetesクラスターの構成ファイルのセットを取得し、クラスター内のポッドに順次適用します。 これらの変更がファイルに表示されるたびに、リポジトリから自動的に取得され、対応する送信に適用されます。 ( ここでkube-applierの構成例を参照してください。)
変更は、スケジュールまたは要求に応じて適用することもできます。 Kube-applierは、起動するたびにアクションを記録し、Prometheusで監視するためのメトリックを提供します。

キューブトップ
- Github
- ライセンス:MITライセンス。
- 要件:Python、Pip / Pipsi。
Kubetopは、実行中のすべてのノード、これらのノード上のすべてのポッド、これらのポッド内のすべてのコンテナー、およびそれぞれのプロセッサーおよびRAMリソースの消費を一覧表示するコンソールユーティリティです-従来のUnix topユーティリティと同様です。 このツールは、詳細なロギング/レポートの完全な代替として推奨できません。 彼らが提供する情報は非常に限られていますが、時にはそのような簡潔さであり、Kubernetesクラスターの状態を簡単に調べることは非常に有用です。
実際、Kubernetesの一部としての
kubectl
も同様の機能がありますが、Kubetopにはより視覚的な出力があります。
kubetop - 13:02:57 Node 0 CPU% 9.80 MEM% 57.97 ( 2 GiB/ 4 GiB) POD% 7.27 ( 8/110) Ready Node 1 CPU% 21.20 MEM% 59.36 ( 2 GiB/ 4 GiB) POD% 3.64 ( 4/110) Ready Node 2 CPU% 99.90 MEM% 58.11 ( 2 GiB/ 4 GiB) POD% 7.27 ( 8/110) Ready Pods: 20 total 0 running 0 terminating 0 pending POD (CONTAINER) %CPU MEM %MEM s4-infrastructure-3073578190-2k2vw 75.5 782.05 MiB 20.76 (subscription-converger) 72.7 459.11 MiB (grid-router) 2.7 98.07 MiB (web) 0.1 67.61 MiB (subscription-manager) 0.0 91.62 MiB (foolscap-log-gatherer) 0.0 21.98 MiB (flapp) 0.0 21.46 MiB (wormhole-relay) 0.0 22.19 MiB
KubectxおよびK8senv
- Kubectx:ブログのお知らせ Github ライセンス:Apache License v2。
- K8senv: GitHub ; ライセンス:MITライセンス; Pythonが必要です(Pipを使用)。
Kubernetesは、コンテキストの概念を使用して、さまざまな構成のクラスターにアクセスします。
kubectl
ネイティブコンソールユーティリティでそれらを切り替えることは、この問題を解決するサードパーティの方法が登場した結果として、あまり便利ではありません。
Kubectx-Kubernetesコンテキストに短い名前を割り当て、それらを切り替えることができるBashスクリプト。 そして、引数としてハイフンを渡すと、前のコンテキストに切り替わります。 このスクリプトは、<Tab>をクリックすることによる名前の自動追加もサポートしています。
$ kubectx minikube Switched to context "minikube". $ kubectx - Switched to context "oregon". $ kubectx - Switched to context "minikube". $ kubectx dublin=gke_ahmetb_europe-west1-b_dublin Context "dublin" set. Aliased "gke_ahmetb_europe-west1-b_dublin" as "dublin".
別のコンテキスト切り替えユーティリティであるk8senvは、機能がわずかに劣ります。
kubeadm-dind-cluster
- Github
- ライセンス:Apache License 2.0。
- 要件:Docker 1.12 +、Kubernetes 1.4.x、1.5.x、1.6.x。
ご存知のように、単一ノードでのローカルKubernetesインストールのテスト実行には、プロジェクト自体からの優れたターンキーソリューションがあります-Minikubeです。 また、Kubernetes自体を実験または開発するために多くのノードのクラスターを展開したい人のために、Mirantisの製品-kubeadm-dind-cluster(KDC)があります。
KDCは
kubeadm
を使用して、仮想マシンではなくDockerコンテナから作成されたクラスターを起動します(このためには、DIND、DockerのDockerを使用します- 約Transl。 ) 。 選択した実装により、クラスターをより速く再起動できます。これは、Kubernetes自体の開発時にコードの変更の結果をすばやく確認する必要がある場合に特に役立ちます。 KDCは継続的な統合環境でも使用できます。 GNU / Linux、Mac OS、およびWindowsで動作し、Goのインストールは不要です。 Kubernetesのdockerizedビルドを使用します。
Kubernetes 1.6に基づいてKDCを操作する例:
$ wget https://cdn.rawgit.com/Mirantis/kubeadm-dind-cluster/master/fixed/dind-cluster-v1.6.sh $ chmod +x dind-cluster-v1.6.sh $ # $ ./dind-cluster-v1.6.sh up $ # kubectl PATH $ export PATH="$HOME/.kubeadm-dind-cluster:$PATH" $ kubectl get nodes NAME STATUS AGE kube-master Ready,master 1m kube-node-1 Ready 34s kube-node-2 Ready 34s $ # Kubernetes dashboard http://localhost:8080/ui $ # , $ ./dind-cluster-v1.6.sh up $ # $ ./dind-cluster-v1.6.sh down $ # DIND $ ./dind-cluster-v1.6.sh clean
その他のユーティリティ
GitHubで利用可能で、元の記事には記載されていないKubernetes用の他のユーティリティのリスト:
- kube-monkey -NetflixのChaos Monkey( chaoskubeに代わるものがあります )との類推により、ポッドをランダムに殺します。
- Kubediff -Kubernetes構成の違いを示します:現在実行中および構成に記述されています(Gitから最新の構成を定期的にダウンロードし、現在の構成と比較し、Slackチャットへの通知の送信をサポートし、Webインターフェイスを備えたサービスとして機能できます);
- ktmpl-パラメーター化されたKubernetesマニフェストテンプレートを処理します
- kube-lint - Kubernetesの構成とリソースを、 ユーザーが定義したルールに準拠しているかどうかを検証します。
- kenv-環境変数をリソースの説明に挿入します。
- konfd -Kubernetesシークレット、configmap、Goテンプレートを使用してアプリケーション構成を管理します。
- kubernetes-secret-manager -HashicorpのVaultを使用して秘密を管理します。
- k8sec-コンソールでKubernetesシークレットを管理するのにも役立ちます。
- kube-ops-view -JavaScriptで記述されたダッシュボードを使用して、クラスターのすべてのポッドとノードの現在のステータスを視覚的に表示します。

- kubewatch -Kubernetesクラスター内のすべてのイベントを監視し、Slackチャットでレポートします。
- kube-slack-炉床操作のエラーについてSlackに通知します。
- k8stail-すべてのクラスターヘッダーのログ出力を
tail -f
として実装します。

翻訳者からのPS
ブログもご覧ください。