# Kubernetes K8s ## 基本操作指令 ```shell= # 查看 k8s 資源物件類型 kubectl api-resources # 從 yaml 建立 deployment kubectl apply -f <name>.yaml # 編輯已部屬的ymal kubectl edit deployment <name_space> kubectl run nginx --image=nginx --dry-run 不運行 -o yml 印出 yaml 檔 --restart=Never 重啟方式 --limits=cpu=200m,memory=200Mi 限制最大值 --requests=cpu=100m,memory=100Mi 限制最小值 kubectl get pods -o wide 列出更多資訊 -A 全部的 pods -w watch 狀態 # 強制刪除 deployment kubectl delete deployment --grace-period=0 --force nginx # 查詢 config contexts kubectl config get-contexts # 設定預設的 namespace kubectl config set-context kubernetes-admin@kubernetes --namespace=delvelopment # 切換 deployment 內的 image 不同的版本 kubectl set image deployment nginx-web nginx-web=nginx:1.20 --record ``` ## 注意事項 ### Limit 限制 :::success CPU 可以設定 1.5倍 server Memory 不可以超過 1:1 不然 pod 會被砍掉 考慮重點 必須在限制的時候考遇到所有的 node 都掛掉之後只剩一個 node 的時候是否能撐得住 所有 pod 的資源消耗 ::: ### Persistent Volume Claim :::info **層級** ::: Persistent Volume Claim(PVC) -- namespace Persistent Volume (PV) -- Cluster ### Jobs執行成功後自動刪除 啟用kube-controller-manager與kube-apiserver上的feature-gates 編輯檔案 /etc/kubernetes/manifests/kube-controller-manager.yaml ```shell= # 加入feature-gates –feature-gates=TTLAfterFinished=true ``` /etc/kubernetes/manifests/kube-apiserver.yaml ```shell= # 建立jobs,指定ttlSecondsAfterFinished,時間單位為秒數 apiVersion: batch/v1 kind: Job metadata: creationTimestamp: null name: my-job spec: ttlSecondsAfterFinished: 10 template: metadata: creationTimestamp: null spec: containers: - command: - echo - Hello my job image: busybox name: my-job resources: {} restartPolicy: Never status: {} ``` ###### tags: `DevOps` `Kubernetes`