出典:クラウドネイティブ研究室では、オリジナルを見るためにクリック。
REVIEW:Kubernetesはネイティブクラウド時代の「オペレーティングシステム」として、それは精通していると、ユーザ(利用者)に不可欠なスキルごとに使用。あなたはKubernetes上で作業している場合は、高可用性およびワークロードKubernetesクラスターの安定動作を確保するために適切なツールとテクニックを必要としています。この記事はあなたに6つの実用Kubernetesオープンソースツールの詳細を提供します、お見逃しなく。
序文
開発と進化Kubernetesで、1は内からその行き過ぎを飼いならすことができます。しかし、一部の人はドライになることを望んでいないので、多くの一般的な質問に独自のソリューションを使用して開発しやすいKubernetes Kubernetesが発生した生産に置かれています。
ここでは、運用効率を向上させるために、コマンドラインの相互作用を合理化など、さまざまな方法でKubernetesを簡素化し、より便利なオープンソースKubernetesツールの少数を示すために、アプリケーションの展開と文法を簡素化するいくつかのテクニックを紹介します。
kubectlオートコンプリート
kubectl
このコマンドラインツールは非常に重要であり、関連するコマンドも多く、我々は非常に多くのコマンドを覚えることはできませんが、また多くの場合、間違っているので、オートコンプリートコマンドが必要である、kubectlツール自体は自動塗りつぶしをサポートしていますフル、単に何をすることができます設定します。
bashのユーザー
ほとんどのユーザーは、シェルを使用している bash
、Linuxシステムは、以下のコマンドで設定することができます:
$ echo "source <(kubectl completion bash)" >> ~/.bashrc
$ source ~/.bashrc
あなたは自動補完を見つけることができない場合は、インストールしようとすることができ bash-completion
、その後缶をリフレッシュ!
zshのユーザー
あなたがシェルを使用している場合で zsh
、次のコマンドで設定することができます:
$ echo "source <(kubectl completion zsh)" >> ~/.zshrc
$ source ~/.zshrc
出力を得るkubectlカスタム
kubectl get
関連リソースは、デフォルトの出力はkubectl、一般的に、我々が使用することができ、内蔵されている -o json
か、 -o yaml
完全なリソース情報を表示します。しかし、多くの時間が、情報は我々は網羅的なものではない気にする必要があるので、我々はあなたが使用することができ、列の出力をカスタマイズする必要が go-template
達成します。
go-template
Golangがテンプレートである、あなたはを参照することができ 、テンプレートの指示。
例えば、唯一の各ポッドにおけるポッドの取得が見たいと思って uid
、次のコマンドを使用できます。
$ kubectl get pods --all-namespaces -o go-template='{{range .items}}{{.metadata.uid}}
{{end}}'
2ea418d4-533e-11e8-b722-005056a1bc83
7178b8bf-4e93-11e8-8175-005056a1bc83
a0341475-5338-11e8-b722-005056a1bc83
...
結果の取得ポッドがあるため List
で取得ポッドの種類 items
値のこの、そのためのアイテムを横断する必要がある、としています {{range .items}}
。その後、選択したコンテンツは、テンプレートによって提示される、それは項目ごとです {{.metadata.uid}}
。
特別な取引を行うためにここに特別な注意、それはにある {{end}}
テンプレートに改行を挿入するために、フロントラインブレイク。
もちろん、あなたがこの治療はエレガントではないと感じた場合、あなたはまた、使用することができ printf
た、使用中の機能、 \n
挿入改行を実現することができます。
$ kubectl get pods --all-namespaces -o go-template --template='{{range .items}}{{printf "%s\n" .metadata.uid}}{{end}}'
それともそれはすることができます。
$ kubectl get pods --all-namespaces -o go-template --template='{{range .items}}{{.metadata.uid}}{{"\n"}}{{end}}'
事実と printf
、簡単に対応するフィールドの出力を達成することができ、かつ独自のスタイルを制御することができます。例えば、それはすることができます。
$ kubectl get pods --all-namespaces -o go-template --template='{{range .items}}{{printf "|%-20s|%-50s|%-30s|\n" .metadata.namespace .metadata.name .metadata.uid}}{{end}}'
|default |details-v1-64b86cd49-85vks |2e7a2a66-533e-11e8-b722-005056a1bc83|
|default |productpage-v1-84f77f8747-7tkwb |2eb4e840-533e-11e8-b722-005056a1bc83|
|default |ratings-v1-5f46655b57-qlrxp |2e89f981-533e-11e8-b722-005056a1bc83|
...
以下の2ゴーテンプレートの高度な使用例:
- レンジのネスト
# 列出所有容器使用的镜像名
$ kubectl get pods --all-namespaces -o go-template --template='{{range .items}}{{range .spec.containers}}{{printf "%s\n" .image}}{{end}}{{end}}'
istio/examples-bookinfo-details-v1:1.5.0
istio/examples-bookinfo-productpage-v1:1.5.0
istio/examples-bookinfo-ratings-v1:1.5.0
...
- 条件付きの
# 列出所有不可调度节点的节点名与 IP
$ kubectl get no -o go-template='{{range .items}}{{if .spec.unschedulable}}{{.metadata.name}} {{.spec.externalID}}{{"\n"}}{{end}}{{end}}'
使用に加えて go-template
、あなたはまた、カスタムフォームを印刷するには、列のカンマ区切りリストを使用することができます。
$ kubectl -n kube-system get pods coredns-64b597b598-7547d -o custom-columns=NAME:.metadata.name,hostip:.status.hostIP
NAME hostip
coredns-64b597b598-7547d 192.168.123.250
あなたが使用することもでき go-template-file
、テンプレートのカスタムリストを、テンプレートパラメータは、あなたが指定する必要があり、行く渡しますが、ファイルに記述されていない template
ファイルを指します。
$ cat > test.tmpl << EOF
NAME HOSTIP
metadata.name status.hostIP
EOF
$ kubectl -n kube-system get pods coredns-64b597b598-7547d -o custom-columns-file=test.tmpl
NAME HOSTIP
coredns-64b597b598-7547d 192.168.123.250
インタラクティブKubernetesクライアント
KUBE-プロンプトは 、クライアントは、対話型のコマンドセッションをKubernetesし、自動的にコマンドごとに人口の背景情報を提供するものと同等のものを入力することができます、あなたは、各コマンドのプレフィックスを追加するkubectlを入力する必要はありません。
別名はkubectlを生成しました
あなたはあなたに多くの時間を節約するエイリアスを使用して、頻繁に対話するkubectlとkubernetes APIを使用する必要がある場合は、オープンソースプロジェクト kubectl-別名は 、次のようにプログラム的kubectl別名、エイリアス生成規則を生成することができます。
エイリアスの簡単な例
KD→kubectl説明
シニアエイリアスの例
kgdepallw→kubectl展開--all-名前空間を取得--watch
コンフィギュレーション・ファイルをチェックしてください
手動Kubernetesマニフェストファイルを作成する場合は、構文は、マニフェストファイルをチェックすることは非常に困難であり、あなたがKubernetesクラスタの複数の異なるバージョンを持っている場合は特に、設定ファイルの構文が正しい一層困難であることを確認してください。
Kubevalは、 私たちは多くの問題を解決することができ、複数のバージョンのKubernetesをサポートするためにKubernetes YAMLやJSON、構成ファイルをチェックするためのツールです。
- 使用例
$ kubeval nginx.yaml
The document nginx.yaml contains an invalid Deployment
---> spec.replicas: Invalid type. Expected: integer, given: string
展開の定義されたKubernetesを簡素化
多くの人々は、マニフェストファイルが複雑すぎると長いです定義されたKubernetesを訴えています。彼らは、我々は非常に保守困難さを軽減します展開の定義を簡略化することができれば、維持するために書くことは難しく、困難です。
Kエッジは 、よりシンプルで簡潔な構文を提供し、その後、KubernetesマニフェストファイルをKエッジに変換します。
- 使用例
Fanger魏コードスキャンは、ネイティブ雲の愛好家は、高度な戦闘技術動向を議論8000で、小さなアシスタントを追加するには!
ポジション- -市会社:グループ暗号に