kubenetes實驗記錄

安裝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 回滾到上次的版本

五、網絡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章