完全なクラスタKubernetesを構築する11
1. kubectlは、コマンドの分類(フォーカス)の原則に従ってください
構文1:
kubectl
动作
类
具体的对象
例えば:
""" kubectl describe node master describe 描述,相当于语法中的动作 node node资源,相当于语法中的类,对某一类资源的统称 master node资源中的一个叫master资源,相当于语法中的具体对象 """
構文2:
kubectl
动作
类
大范围参数
细化参数
...例えば:
""" kubectl get pods -n kube-system -o wide -n 表示 namespace(命名空间) kube-system 表示 多个命名空间中的一个命名空间 -o wide 更加全面的展示信息 """
ユーザーが独自のポッドを実行することはできませんユーザーを制限するためにどのような技術により、2マスターノード?
デフォルトでは、マスターノードは、ユーザーのポッドを実行することはできません。そしてKubernetesは、これを行うテイント/寛容機構のKubernetesに依存しています。
その原理は非常に単純です:ノードはテイント(染色)、すなわち「著しい汚れ」を追加した後Kubernetesポッド「は、トップの上に」があるので、すべてのポッドは、このノード上で実行されません。
、彼は寛容を宣言する「汚れ」を「許容」することができますことを、個々のポッド文がある場合を除き、それは、このノード上で実行することができます。
その中で、「汚染された」(テイント)コマンドマークノードは、次のとおりです。
kubectl taint nodes node1 foo=bar:NoSchedule
FOO =バー:NoScheduleこのとき、キーと値は、ノードノード1、すなわちのテイント形式を増加します。どこNoSchedule内の値は、新しいポッドをスケジュールするときテイントは、すでに彼らは寛容にしていない場合でも、ポッドをnode1で実行されているに影響を与えずに、効果を持っていることを意味します。
それでは、どのようポッド文は、それを寛容?
限り、我々はtolerationsフィールドを追加し、ポッド内specファイルの.yamlの一部であるとして:
apiVersion: v1 kind: Pod ... spec: tolerations: - key: "foo" operator: "Equal" value: "bar" effect: "NoSchedule"
この寛容の意味は、このポッドはテイント(「等しい」、「等しい」動作演算子)バー=すべてのキーと値のペアfoo「を許容する」ことができることです。
今戻って私たちが築いてきたクラスタへ。その後、あなたはkubectlを通じて確認した場合、それはことが判明されるかをマスターノードテイントフィールドについて説明します。
$ kubectl describe node master Name: master Roles: master Taints: node-role.kubernetes.io/master:NoSchedule
あなたはマスターノードがデフォルトで追加され、見る
node-role.kubernetes.io/master:NoSchedule
ように「汚れ」、「結合」node-role.kubernetes.io/master
が、「価値」を提供していませんこの時点で、あなたは演算子(演算子:「存在」、「存在」缶)「が存在する」とこれを好きに必要なすべてのfooを許容することができポッドを説明するためには、ポッドにこの実行を行うために、キーテイントでありますマスターノード:
apiVersion: v1 kind: Pod ... spec: tolerations: - key: "foo" operator: "Exists" effect: "NoSchedule"
もちろん、あなただけの単一のノードをKubernetesをしたい場合は、テイントは正しい選択です削除します:
$ kubectl taint nodes --all node-role.kubernetes.io/master-
上に示したように、私たちは「である
node-role.kubernetes.io/master
」、この背後にあるキーはダッシュを追加しました「 - 」、この形式は、すべてを除去するためにことを意味し、「node-role.kubernetes.io/master
」テイントが鍵