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

kubectl命令行管理工具

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

kubectl自動補全功能設置
執行:
一、yum install -y bash-completion
二、source <(kubectl completion bash)
三、echo "source <(kubectl completion bash)" >> ~/.bashrcnode

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

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

二、查看
kubectl get pods
kubectl get pods,deployment,replicasetjson

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

三、如果有異常
kubectl describe pods nginx-test-795c895f4c-zpr87bash

四、刪除
kubectl delete deploy/nginx-testapp

五、建立好控制器後,將 它發佈出去
--port=80:集羣內部之間訪問的端口
-type=NodePort:指定這個類型,外部能訪問
--target-port=80:容器的端口
--name=nginx-service:指定service名稱curl

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

查看:
ep:Endpoints工具

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

查看service 被轉發到哪一個node上
《三》kubectl命令行管理工具、YAML配置詳解

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

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

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

端口(34234):
《三》kubectl命令行管理工具、YAML配置詳解

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

四、查看日誌:
《三》kubectl命令行管理工具、YAML配置詳解

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

再重啓 systemctl restart kube-proxy

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

由kube-proxy 動態幫你完成,轉發到哪一個pod上
《三》kubectl命令行管理工具、YAML配置詳解

五、更新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

六、再訪問curl http://192.168.1.23:34234 能夠看到nginx版本變爲1.15

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

八、再次驗證:http://192.168.1.23:34234 能夠看到nginx版本變爲1.14

九、刪除
若是刪除pod,控制器會幫你再新建一個pod,因此須要刪除控制器
kubectl delete deploy/nginx-test
kubectl delete svc/nginx-service

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

十、能夠進入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命令行管理工具、YAML配置詳解

執行: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命令行管理工具、YAML配置詳解

執行:kubectl apply -f deployment-service.yaml
查看:《三》kubectl命令行管理工具、YAML配置詳解

《三》kubectl命令行管理工具、YAML配置詳解
驗證:curl 192.168.1.23:45915 -I
回滾:經過命令回滾

能夠寫在一個yaml配置文件裏,須要用---來分割:

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

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

說明
一、第1和第2 :控制器和pod綁定
二、第2和第3: service須要和pod綁定
三、第3和第4:要設置同樣的標籤

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

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

相關文章
相關標籤/搜索