CKA対策vol.3です。
バックナンバーはこちら
設定ファイルに問題がある場合
-
kubectl cluster-info --kubeconfig=/path/to/the/file
というコマンドを打つと指定したkubeconfigファイルに基づいて選択されたクラスターの情報が出力される。あとはその内容を是正していく。
「すべてのノードのExternal IPのリストを表示します」を深堀する
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'
が何をしているのかを詳しく見る。
-
.items[*]
- kubectlが返すJSONオブジェクトのitems配列を表す。
- ワイルドカード
*
はその配列内の全ての要素を指す。items[]
配下の全ての.status.addresses[?(@.type=="ExternalIP")].address
が出力される。
-
[?(@.type=="ExternalIP")]
- フィルタ演算子
?
は条件に一致する要素だけを抜き出す。 - 現在の要素(ちゃんとした呼び名がわからなかった)
@
は配列内の現在の要素を表す。 -
type=="ExternalIP"
その中からtypeがExternalIPのものを抜き出す。
- フィルタ演算子
TaintとTolerations
-
kubectl taint node <nodeName> <key>=<value>:<effect>
でnodeにtaintを付与する。 - Tolerationsはpodに付与する。spec.tolerationsに設定をする。
operator: "Exists"
の場合は、value: "value1"
は不要。
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
tolerations:
- key: "example-key"
value: "value1"
operator: "Equal"
effect: "NoSchedule"