k8s
https://gyazo.com/6a95afaa823f1f6c6e4337a279ce61de
Kubernetesドキュメント | Kubernetes
標準化用語集 | Kubernetes
リソース
Kubernetes API Reference Docs
Workloads
Deployment > ReplicaSet > Pod
CronJob > Job > Pod
ReplicationController > Pod
DaemonSet > Pod
StatefulSet > Pod
Service
Service (L4, TCP/IP)
type がいろいろ ClusterIP, ExternalIp, NodePort, LoadBalancer, Headless, etc
Ingress (L7, HTTP)
Config & Storage
Secret
ConfigMap
PersistentVolumeClaim
Cluster
Node, Namespace, ServiceAccount
Metadata
HorizontalPodAutoscaler, PodDistruptionBudget
kubectl
kubectl 周りはこちら kubectl
kustomize
kustomize build . | kubectl diff -f -
kustomize build . | kubectl apply -f -
kustomize edit set image app:hoge
で newTag: hoge にしてくれる
Pod が起動しない時
kubectl logs
アプリケーション等の書くのログを見る
kubectl describe イベントを見る
リソースがないとかノードがないとかマウントに失敗したとか
kubectl run 中に入ってデバッグ
$ kubectl run -it --rm --image=nginx:1.16 --restart=Never sample-debug --command -- /bin/sh
$ kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- /bin/bash
cronjob をすぐ実行する
$ kubectl create job --from=cronjob/<name of cronjob> <name of job>
べんり
ヘルスチェック
Liveness Probe、Readiness ProbeおよびStartup Probeを使用する | Kubernetes
コンテナのProbe - Podのライフサイクル | Kubernetes
CRD
is 何 → Custom Resource Definition
GKE の kind: BackendConfig とか
リソースについて
s Understanding Kubernetes Limits and Requests | Sysdig
例を交えてKubernetesのリミットとリクエストを理解する | Sysdig Monitor | Sysdigブログ | コンテナ・Kubernetes環境向けセキュリティ・モニタリング プラットフォーム
Kubernetesのリソースの基本を今度こそ理解する
Nodeのマシンタイプをケチって覚えたdebugging kubernetes - 百日半狂乱
Kubernetesのリソースリミットを適切なサイズにする方法 | Sysdig
(前半)Kubernetesでのよくある失敗10選 - ITnews
メモリはOOM怖いならオーバーコミットすべきでない
よむ: Kubernetes Liveness and Readiness Probes: How to Avoid Shooting Yourself in the Foot
env, envFrom
備考: envまたはenvFromフィールドを使用して設定された環境変数は、コンテナイメージで指定された環境変数を上書きします。
コンテナの環境変数の定義 | Kubernetes
command, args
command は ENTRYPOINT / argsは CMD に対応
省略するとどちらもイメージのものが使われるはず
k8s Job + Sidecar の悲しみ
時は2020年
kustomize edit はパス指定できない
option to specify path for kustomize edit · Issue #2803 · kubernetes-sigs/kustomize
諦めて $(cd manifest/overlays/dev && kustomize edit set image ...) みたいにする
Insufficient cpu
WIP
$ kubectl describe nodes などでリソース状況を見る
VPA
Vertical Pod Autoscaler
垂直 Pod 自動スケーリングの構成  |  Kubernetes Engine ドキュメント  |  Google Cloud
Vertical Pod Autoscaling: The Definitive Guide - Povilas Versockas
猫でもわかる Vertical Pod Autoscaler - チェシャ猫の消滅定理
updatePolicy.updateMode: "Off" にして様子見ている
kustomize でパッチを当てる
kustomize/inlinePatch.md at master · kubernetes-sigs/kustomize
kustomize/patchMultipleObjects.md at master · kubernetes-sigs/kustomize
kustomize supports patching via either a strategic merge patch (wherein you partially re-specify the thing you want to modify, with in-place changes) or a JSON patch (wherein you specify specific operation/target/value tuples in a particular syntax).
↑ patchesStrategicMerge と patchesJson6902 の違いはこの1文が分かりやすい
patchesStrategicMerge
community/strategic-merge-patch.md at master · kubernetes/community
kind & metadata.name を元にマージ対象を決める?
意外と $patch: delete で削除もできる
patchesJson6902
kustomize/jsonpatch.md at master · kubernetes-sigs/kustomize
適用する target とパッチ(op, path, value)を指定する
やりたいことに対して宣言する内容が多い気がするけど意図は分かりやすいか
patchesStrategicMerge でネストしたリソースの一部フィールドを消すのはネストした定義を作って内側で delete する(マージした結果消える yaml を作る)けど、こちらは op: delete して path, value を指定する
patches 👆のどちらか自動的に検出する
よくやる kubectl run
$ kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- /bin/bash
$ kubectl run -it --rm --image=docker.io/redis --restart=Never redis-cli -- /bin/sh
ツール類
kind
kubenetes in docker
kubernetes-sigs/kind: Kubernetes IN Docker - local clusters for testing Kubernetes
ローカルでマルチノードを試せる
metrics 系 API は使えない?
練習に便利
kind/kind-example-config.yaml at master · kubernetes-sigs/kind を kind.yaml で保存
$ kind create cluster --config kind.yaml --name kindcluster
$ kubectl config use-context kind-kindcluster
krew
kubernetes-sigs/krew: 📦 Find and install kubectl plugins / Installing · Krew
kubectl plugin マネージャー, krew 自体もプラグイン
plugin index kubernetes-sigs/krew-index: Plugin index for https://github.com/kubernetes-sigs/krew. This repo is for plugin maintainers.
Kubernetes完全ガイド 第2版 におすすめ色々書いてある
$ kubectl krew install ctx で kubectx をインストール
stern
wercker/stern: ⎈ Multi pod and container log tailing for Kubernetes
ログを便利に見るやつ
$ stern QUERY [flags]
QUERY で pod を絞り込む、正規表現書ける
--tail
--all-namespaces
-c CONTAINER
kustomize
kubernetes-sigs/kustomize: Customization of kubernetes YAML configurations
2020/10/13
brew で入るのは 3系
kubectl のサブコマンドは 2系
kubectl/go.mod at kubernetes-1.19.2 · kubernetes/kubectl とかで確認できる
kube-ps1
jonmosco/kube-ps1: Kubernetes prompt info for bash and zsh
kubeon / kubeoff で切り替え
code:zshenv.sh
# kube-ps1
# https://github.com/jonmosco/kube-ps1
export KUBE_PS1="/usr/local/opt/kube-ps1/share/kube-ps1.sh"
if -e $KUBE_PS1 ; then
source $KUBE_PS1
fi
code:zshrc.sh
# precmd などで
if -e $KUBE_PS1 ; then
PROMPT='$(kube_ps1)'$PROMPT
fi;
# GKE の生成するクラスタ名が長いので短くする
_kube_ps1_get_cluster_short() {
if $1 =~ "^gke_" ; then
# GKE {project}.{cluster}
echo "$1" | cut -d_ -f2,4 --output-delimiter='.'
else
echo "$1"
fi
}
export KUBE_PS1_CLUSTER_FUNCTION=_kube_ps1_get_cluster_short
#Kubernetes #command #dev