安裝kubectl
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
vim ~/.kube/config
kubectl version
一、CKA-核心概念、集羣架構和組件
kubectl get namespace #查看namespace
kubectl create namespace qiudi #創建namespace
kubectl -n qiudi run tensorflow-serving --image=harbor.test.com/yzcontainer/tensorflow/serving:1.12.0 --replicas=1 port=8500 #從一個鏡像運行pod
kubectl -n qiudi run nginx --image=harbor.test-inc.com/liuyan/nginx:alpine --replicas=2 port=80
kubectl -n qiudi get pod -o wide #查看某個namespace的pod
kubectl -n qiudi get node #查看某個namespace的node
kubectl -n qiudi create service nodeport tensorflow-serving --tcp 8500:8500 #創建service綁定現有的pod
kubectl -n qiudi get service #查看某個namespace的service
kubectl -n qiudi get pods -o yaml #將pod輸出成yaml格式
kubectl -n qiudi describe pods tensorflow-serving #輸出某個pod的詳細信息
kubectl -n qiudi delete pod tensorflow-serving #刪除某個pod
kubectl -n qiudi get deployment #查看deployment
kubectl delete deployment tensorflow-serving #強制刪除某個pod就必須用刪除dployment的方法,否則無法刪除
kubectl -n qiudi exec -it tensorflow-serving-6fc6849d98-mm5fg -- /bin/bash #進入某個pod的shell環境
kubectl -n qiudi get pod tensorflow-serving-6fc6849d98-mm5fg -o wide #查看某個pod的IP
kubectl get pod -l env=qa #獲取包含 env=qa 的 全部Pod
kubectl -n qiudi logs -f tensorflow-serving-6fc6849d98-mm5fg #查看某個pod的日誌
kubectl -n qiudi create deployment mydeploy --image=harbor.test-inc.com/yzcontainer/tensorflow/serving:1.12.0#創建deployment
kubectl -n qiudi scale deploy/mydeploy --replicas=5#擴容副本數
kubectl -n qiudi edit deploy/mydeploy
二、CKA - 集羣安裝配置、升級和安全
三、調度器
1.給pod設置標籤,使用cubectl選擇帶標籤的pod
2.選擇一臺node打上帶自己namespace前綴的標籤,使用兩種以上的方式把pod調度到打標的node上。清理node上的標籤。
3.設置啓動的pod計算資源限制爲:cpu 500m、memory 100Mi,觀察調度結果及實例Qos。
4.設置自己namespace下黑夜的計算資源cpu爲0.3,memory爲150Mi。創建一個pod實例不設置計算資源申請,觀察調度後分配的資源。
5.啓動一個daemonset的nginx應用(創建的時候避免暴露80端口,防止衝突)。
四、日誌監控和應用生命週期
創建一個有 3 個容器的 Pod,示例如下
```
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: busybox
name: busybox
spec:
containers:
- args:
- bin/sh
- -c
- ls; sleep 3600
image: busybox
name: busybox1
resources: {}
- args:
- bin/sh
- -c
- echo Hello world; sleep 3600
image: busybox
name: busybox2
resources: {}
- args:
- bin/sh
- -c
- echo this is third container; sleep 3600
image: busybox
name: busybox3
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
```
1. 檢查剛纔創建的 Pod 中每個容器的日誌
kubectl -n flume-platform logs mypod
kubectl -n flume-platform logs -f mypod
2. 檢查 busybox2 容器的上次日誌
3. 在 busybox3 中執行 ls 命令檢查其輸出
4. 創建一個 ConfigMap,查看其內容,將該 ConfigMap 配置,掛載到上面創建的 Pod busybox1 容器的 /etc/config ,最後進入到該容器檢查配置是否正確
5. 使用 busybox 鏡像創建一個 Job,並查看它的日誌輸出,最後將該 Job 刪除
6. 使用 nginx:1.16 鏡像創建一個 Deployment,然後將其擴容到 2 個實例,查看它的滾動更新策略
7. 爲上面創建的 Deployment 設置 livenessProbe 和 readinessProbe
8. 將改 Deployment 的鏡像設置爲 nginx:1.17 進行滾動升級,觀察其滾動升級過程
9. 將 nginx:1.17 回滾到上次的版本