1. 程式人生 > >《三》kubectl命令行管理工具、YAML配置詳解

《三》kubectl命令行管理工具、YAML配置詳解

測試 重要 pods rpo 解析 http kubectl roo 相同

kubectl命令行管理工具

技術分享圖片

kubectl自動補全功能設置
執行:
1、yum install -y bash-completion
2、source <(kubectl completion bash)
3、echo "source <(kubectl completion bash)" >> ~/.bashrc

1、創建
nginx-test:控制器的名稱,默認是deployment控制器
--image:nginx:1.14 鏡像
--port=80:暴露的端口
--replicas=3:啟動3個副本

kubectl run nginx-test --image=nginx:1.14 --port=80 --replicas=3

2、查看
kubectl get pods
kubectl get pods,deployment,replicaset

kubectl api-resources 查看簡寫的命令
比如:service 就是cs
componentstatuses就是cs

3、若是有異常
kubectl describe pods nginx-test-795c895f4c-zpr87

4、刪除
kubectl delete deploy/nginx-test

5、創建好控制器後,將 它發布出去
--port=80:集群內部之間訪問的端口
-type=NodePort:指定這個類型,外部能訪問
--target-port=80:容器的端口

--name=nginx-service:指定service名稱

kubectl expose deployment nginx-test --port=80 --type=NodePort --target-port=80 --name=nginx-service

查看:
ep:Endpoints

技術分享圖片

查看service 被轉發到哪個node上
技術分享圖片

安裝ipvsadm 這個工具
1、yum install ipvsadm -y

2、查看:
技術分享圖片

3、訪問:
http://192.168.1.23:34234/
http://192.168.1.24:34234/

端口(34234):
技術分享圖片

過程:訪問http://192.168.1.23:34234/ 會通過service 幫你轉發到集群端口,集群端口會通過ipvsadm 幫你轉發到 3個副本上

4、查看日誌:
技術分享圖片

每個節點上都要加上:
vi /opt/kubernetes/cfg/kube-proxy 新增如下(啟用lvs,就需要配置一下,可能會有問題):
--masquerade-all=true \

再重啟 systemctl restart kube-proxy

技術分享圖片

由kube-proxy 動態幫你完成,轉發到哪個pod上
技術分享圖片

5、更新image的版本,現在nginx 版本為1.14,先需要更新到1.15版本
指定控制器名稱
nginx-test:容器的名字,可根據kubectl describe deployment/nginx-test 查看

[root@docker ~]# kubectl set image deployment/nginx-test nginx-test=nginx:1.15

6、再訪問curl http://192.168.1.23:34234 可以看到nginx版本變為1.15

7、更新有問題需要回滾
kubectl rollout history deployment/nginx-test
kubectl rollout undo deployment/nginx-test 回滾到上一個版本

8、再次驗證:http://192.168.1.23:34234 可以看到nginx版本變為1.14

9、刪除
如果刪除pod,控制器會幫你再新建一個pod,所以需要刪除控制器
kubectl delete deploy/nginx-test
kubectl delete svc/nginx-service

技術分享圖片

10、可以進入pod
kubectl exec -it pod名稱 bash

YAML詳解

YAML是專門用來寫配置文件的語言,非常簡潔和強大,使用比json更方便。它實質上是一種通用的數據串行化格式。後文會說明定義YAML文件創建Pod和創建Deployment。

YAML語法規則:

  • 大小寫敏感
  • 使用縮進表示層級關系
  • 縮進時不允許使用Tal鍵,只允許使用空格
  • 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
  • ”#” 表示註釋,從這個字符一直到行尾,都會被解析器忽略

詳解
apiVersion: apps/v1 :指定api版本,此值必須在kubectl apiversion中 ;查看版本 kubectl api-versions;v1是穩定版,v1beta1就是測試版

kind: Deployment:指在apps/v1 這個接口中指定資源的類型;Deployment是控制器

metadata: 指的資源Deployment(控制器)的元數據/屬性
name: nginx-deployment 指定控制器名稱
namespace: default 指定命名空間
labels: 指定標簽
app: nginx

spec 指定這個資源(Deployment)內容
replicas: 3 設置3個副本

template: 以下就是容器的設置
metadata: 關聯到上面的標簽
labels:
app: nginx
spec:
containers:

  • name: nginx 容器的名稱
    image: nginx:1.15 鏡像
    ports:
    • containerPort: 80 容器的端口
      技術分享圖片

執行:kubectl apply -f deployment.yaml

部署service,將應用發布出去
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:

  • port: 80
    targetPort: 80
    selector:
    app: nginx

技術分享圖片

執行:kubectl apply -f deployment-service.yaml
查看:技術分享圖片

技術分享圖片
驗證:curl 192.168.1.23:45915 -I
回滾:通過命令回滾

可以寫在一個yaml配置文件裏,需要用---來分割:

技術分享圖片

技術分享圖片

說明
1、第1和第2 :控制器和pod綁定
2、第2和第3: service需要和pod綁定
3、第3和第4:要設置一樣的標簽

技術分享圖片

導出現有的ymal文件:
[root@docker demo]# kubectl get deployment/nginx-deployment -o=yaml --export > my-deploy.yaml

《三》kubectl命令行管理工具、YAML配置詳解