導航:首頁 > 文件處理 > k8spod日誌文件夾

k8spod日誌文件夾

發布時間:2024-09-24 13:09:45

⑴ k8s kubectl常用命令總結

查看所有 pod 列表, -n 後跟 namespace, 查看指定的命名空間
kubectl get pod
kubectl get pod -n kube

查看所有的命名空間
kubectl get ns

刪除某個節點
kubectl delete pod 節點名稱 -n 命名空間
查看 RC 和 service 列表, -o wide 查看詳細信息
kubectl get rc,svc
kubectl get pod,svc -o wide
kubectl get pod -o yaml

查看某個名稱空間下的所有節點以及ip
kubectl get pod -n 名稱空間名 -o wide

模擬用戶發起請求:
(模擬100個用戶同時發起100000條請求,後面跟著ip地址)
ab -c 100 -k 100000 http://23.23.23.1 -o wide

顯示仔坦租 Node 的詳細信息
kubectl describe node 192.168.0.212

顯示 Pod 的詳細信息, 特別是查看 pod 無法創建的時候的日誌
kubectl describe pod
eg:
kubectl describe pod redis-master-tqds9

根據 yaml 創建資源, apply 可以重復執行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml

基於 pod.yaml 定義的名稱刪除 pod
kubectl delete -f pod.yaml

刪除所有包含某個 label 的pod 和 service
kubectl delete pod,svc -l name=

刪除所有 Pod
kubectl delete pod --all

查看 endpoint 列表
kubectl get endpoints

執行 pod 的 date 命令
kubectl exec – date
kubectl exec – bash
kubectl exec – ping 10.24.51.9

通過bash獲得 pod 中某個容器的TTY,相當信握於登錄容器
kubectl exec -it -c – bash
eg:
kubectl exec -it redis-master-cln81 – bash

查看容器的日誌
kubectl logs
kubectl logs -f # 實時查看日誌

kubectl get pods --all-namespaces

kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system

查看pods具體信息
kubectl get pods -o wide kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system
查看集群健康狀態
kubectl get cs

獲取所有deployment
kubectl get deployment --all-namespaces

列出該 namespace 中的所有 pod 包括未初始化的
kubectl get pods --include-uninitialized

查看deployment()
kubectl get deployment nginx-app

kubectl get rc,services
查看pods結構信息(重點,通過這個看日誌分析錯誤)
對控制器和服務,node同樣有效
kubectl describe pods xxxxpodsname --namespace=xxxnamespace
其他控制器類似吧,就是kubectl get 控制器念兆 控制器具體名稱
查看pod日誌
kubectl logs $POD_NAME
查看pod變數
kubectl exec my-nginx-5j8ok – printenv | grep SERVICE
集群
kubectl get cs # 集群健康情況
kubectl cluster-info # 集群核心組件運行情況
kubectl get namespaces # 表空間名
kubectl version # 版本
kubectl api-versions # API
kubectl get events # 查看事件
kubectl get nodes //獲取全部節點
kubectl delete node k8s2 //刪除節點
kubectl rollout status deploy nginx-test
創建
kubectl create -f ./nginx.yaml # 創建資源
kubectl create -f . # 創建當前目錄下的所有yaml資源
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml # 使用多個文件創建資源
kubectl create -f ./dir # 使用目錄下的所有清單文件來創建資源
kubectl create -f https://git.io/vPieo # 使用 url 來創建資源
kubectl run -i --tty busybox --image=busybox ----創建帶有終端的pod
kubectl run nginx --image=nginx # 啟動一個 nginx 實例
kubectl run mybusybox --image=busybox --replicas=5 ----啟動多個pod
kubectl explain pods,svc # 獲取 pod 和 svc 的文檔

kubectl rolling-update python-v1 -f python-v2.json # 滾動更新 pod frontend-v1
kubectl rolling-update python-v1 python-v2 --image=image:v2 # 更新資源名稱並更新鏡像
kubectl rolling-update python --image=image:v2 # 更新 frontend pod 中的鏡像
kubectl rolling-update python-v1 python-v2 --rollback # 退出已存在的進行中的滾動更新
cat pod.json | kubectl replace -f - # 基於 stdin 輸入的 JSON 替換 pod
強制替換,刪除後重新創建資源。會導致服務中斷。
kubectl replace --force -f ./pod.json
為 nginx RC 創建服務,啟用本地 80 埠連接到容器上的 8000 埠
kubectl expose rc nginx --port=80 --target-port=8000

更新單容器 pod 的鏡像版本(tag)到 v4
kubectl get pod nginx-pod -o yaml | sed 『s/(image: myimage):.*$/\1:v4/』 | kubectl replace -f -
kubectl label pods nginx-pod new-label=awesome # 添加標簽
kubectl annotate pods nginx-pod icon-url= http://goo.gl/XXBTWq # 添加註解
kubectl autoscale deployment foo --min=2 --max=10 # 自動擴展 deployment 「foo」
編輯資源
kubectl edit svc/docker-registry # 編輯名為 docker-registry 的 service
KUBE_EDITOR=「nano」 kubectl edit svc/docker-registry # 使用其它編輯器
動態伸縮pod
kubectl scale --replicas=3 rs/foo # 將foo副本集變成3個
kubectl scale --replicas=3 -f foo.yaml # 縮放「foo」中指定的資源。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # 將deployment/mysql從2個變成3個
kubectl scale --replicas=5 rc/foo rc/bar rc/baz # 變更多個控制器的數量
kubectl rollout status deploy deployment/mysql # 查看變更進度

kubectl delete -f ./pod.json # 刪除 pod.json 文件中定義的類型和名稱的 pod
kubectl delete pod,service baz foo # 刪除名為「baz」的 pod 和名為「foo」的 service
kubectl delete pods,services -l name=myLabel # 刪除具有 name=myLabel 標簽的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized # 刪除具有 name=myLabel 標簽的 pod 和 service,包括尚未初始化的
kubectl -n my-ns delete po,svc --all # 刪除 my-ns namespace下的所有 pod 和 serivce,包括尚未初始化的
kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force 強制刪除

kubectl logs nginx-pod # mp 輸出 pod 的日誌(stdout)
kubectl logs nginx-pod -c my-container # mp 輸出 pod 中容器的日誌(stdout,pod 中有多個容器的情況下使用)
kubectl logs -f nginx-pod # 流式輸出 pod 的日誌(stdout)
kubectl logs -f nginx-pod -c my-container # 流式輸出 pod 中容器的日誌(stdout,pod 中有多個容器的情況下使用)
kubectl run -i --tty busybox --image=busybox – sh # 互動式 shell 的方式運行 pod
kubectl attach nginx-pod -i # 連接到運行中的容器
kubectl port-forward nginx-pod 5000:6000 # 轉發 pod 中的 6000 埠到本地的 5000 埠
kubectl exec nginx-pod – ls / # 在已存在的容器中執行命令(只有一個容器的情況下)
kubectl exec nginx-pod -c my-container – ls / # 在已存在的容器中執行命令(pod 中有多個容器的情況下)
kubectl top pod POD_NAME --containers # 顯示指定 pod和容器的指標度量

kubectl drain k8s-node # 清空 my-node 以待維護
kubectl top node k8s-node # 顯示 my-node 的指標度量
kubectl cluster-info mp --output-directory=/path/to/cluster-state # 將當前集群狀態輸出到 /path/to/cluster-state

⑵ kubernetes(k8s)secret使用

Secret有三種類型:
1、Opaque:base64 編碼格式的 Secret,用來存儲密碼、密鑰等;但數據也可以通過base64 –decode解碼得到原始數據,所以加密性很弱。
2、kubernetes.io/dockerconfigjson:用來存儲私有docker registry的認證信息。
3、kubernetes.io/service-account-token:用於被serviceaccount引用,serviceaccout 創建時Kubernetes會默認創建對應的secret。Pod如果使用了serviceaccount,對應的secret會自動掛載到Pod目錄/run/secrets/kubernetes.io/serviceaccount中。

Opaque 類型的數據是一個 map 類型,要求value是base64編碼格式,比如我們來創建一個用戶名為 admin,密碼為 admin321 的 Secret 對象,首先需要把這用戶名和密碼做 base64 編碼,

然後可以利用上面編碼過後的數據來編寫一個YAML文件:(secret-demo.yaml)

然後同樣使用kubectl命令來創建:

利用get secret命令查看:

其中default-token-n9w2d為創建集群時默認創建的 secret,被serviceacount/default 引用。

使用describe命令,查看詳情:

我們可以看到利用describe命令查看到的Data沒有直接顯示出來,如果想看到Data裡面的詳細信息,同樣我們可以輸出成YAML文件進行查看:

創建好Secret對象後,有兩種方式來使用它:
1、以環境變裂褲量的形式
2、以Volume的形式掛載

首先我們來測試下環境變數的方式,同樣的,我們來使用一個簡單的busybox鏡像來測試下:(secret1-pod.yaml)

創建上面的Pod:

然後我們查看Pod的日誌輸出:

可以看到有 USERNAME 和 PASSWORD 兩個環境變數輸出出來。需要注意的舉源帶是,環境變數的方式,不支持動態更新密碼。

同樣的我們用一個Pod來驗證下Volume掛載,創建一個Pod文件:(secret2-pod.yaml)

創建Pod:

然後我們查看輸出日誌:

可以看到secret把兩個key掛載成了兩個對應的文件。

除了上面的Opaque這種類型外,我們還可以來創建用戶docker registry認證的Secret,直接使用kubectl create命令創建即可,如下:

然後查看Secret列表:

注意 看上面的TYPE類型,myregistry是不是對應的kubernetes.io/dockerconfigjson,同樣的可以使用describe命令來查看詳細信息:

同樣的可以看到Data區域沒有直接展示出來,如果想查看的話可以使用-o yaml來輸出展示出來:

可以把上面的data.dockerconfigjson下面的數據做一個base64解碼正蘆,看看裡面的數據是怎樣的呢?

如果我們需要拉取私有倉庫中的docker鏡像的話就需要使用到上面的myregistry這個Secret:

我們需要拉取私有倉庫鏡像10.8.13.85/test:v1,我們就需要針對該私有倉庫來創建一個如上的Secret,然後在Pod的 YAML 文件中指定imagePullSecrets。

另外一種Secret類型就是kubernetes.io/service-account-token,用於被serviceaccount引用。serviceaccout 創建時 Kubernetes 會默認創建對應的 secret。Pod 如果使用了 serviceaccount,對應的secret會自動掛載到Pod的/run/secrets/kubernetes.io/serviceaccount目錄中。

這里我們使用一個nginx鏡像來驗證一下,大家想一想為什麼不是呀busybox鏡像來驗證?當然也是可以的,但是我們就不能在command裡面來驗證了,因為token是需要Pod運行起來過後才會被掛載上去的,直接在command命令中去查看肯定是還沒有 token 文件的。

最後我們來對比下Secret和ConfigMap這兩種資源對象的異同點:

key/value的形式
屬於某個特定的namespace
可以導出到環境變數
可以通過目錄/文件形式掛載
通過 volume 掛載的配置信息均可熱更新

Secret 可以被 ServerAccount 關聯
Secret 可以存儲 docker register 的鑒權信息,用在 ImagePullSecret 參數中,用於拉取私有倉庫的鏡像
Secret 支持 Base64 加密
Secret 分為 kubernetes.io/service-account-token、kubernetes.io/dockerconfigjson、Opaque 三種類型,而 Configmap 不區分類型

閱讀全文

與k8spod日誌文件夾相關的資料

熱點內容
php網頁視頻直播源碼 瀏覽:319
ftp伺服器命令 瀏覽:365
怎麼在app上找市盈率低的股票 瀏覽:801
加密貨幣市場降溫 瀏覽:874
java獲取bean的屬性 瀏覽:916
yeah郵箱伺服器地址和域 瀏覽:280
安卓手機如何打開錄制功能 瀏覽:584
小孩想學音樂編程從哪裡學起 瀏覽:111
totolink路由器加密 瀏覽:476
虛擬機文本編譯 瀏覽:988
電影是如何壓縮的 瀏覽:820
du命令用法 瀏覽:663
怎麼在虛擬機創建ftp伺服器 瀏覽:5
Mac站點文件夾什麼意思 瀏覽:906
壓縮彈簧汽車 瀏覽:329
伺服器x6什麼意思 瀏覽:587
雷凌車載導航怎麼安裝app 瀏覽:163
安卓工程中如何編譯程序 瀏覽:92
k8spod日誌文件夾 瀏覽:517
脫字元python 瀏覽:850