3.2.4 K8S最佳實踐

目錄

3.2.4.1 K8S可視化自動化工具及日誌收集

1、Endpoints

2、部署Harbor-Registry

3.2.4.2 結合K8S的系統監控及業務部署

1、kubectl

 2、yaml資源描述文件

3、Kompose轉換

3.2.4.3 網易在K8S的探索和實踐(網易雲)

1、準備持久化環境

    1.1、什麼是NFS

    1.2、NFS原理

    1.3、NFS服務主要進程

    1.4、NFS的關鍵工具

2、實現數據持久化

    2.1、PV與PVC

3、ConfigMap

    3.1、創建ConfigMap的4種方式

    3.2、ConfigMap的限制


3.2.4.1 K8S可視化自動化工具及日誌收集

1、Endpoints

有幾種情況下需要用到沒有selector的service。
    1、使用kubernetes集羣外部的數據庫時
    2、service中用到了其他namespace或kubernetes集羣中的service
    3、在kubernetes的工作負載與集羣外的後端之間互相遷移

2、部署Harbor-Registry

    老師文檔中“4.6.    部署 Harbor-Registry”只適合二進制方式安裝的k8s集羣
    1、下載最新的docker-compose二進制文件:https://github.com/docker/compose/releases
    2、下載最新的harbor離線安裝包:https://github.com/goharbor/harbor/releases

3.2.4.2 結合K8S的系統監控及業務部署

參考老師原文檔:E:\meWork\study\project\subject-3\subject-3-k8s\專題三-Kubernetes_學習文檔-N.docx

的“5.4.    kubectl”、“5.5.    YAML資源描述文件

1、kubectl

官網最詳細的命令使用文檔(強烈推薦大家學習):https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

中文文檔:http://docs.kubernetes.org.cn/683.html

 2、yaml資源描述文件

    yaml是一種用來寫配置文件的語言。
    yaml有兩種結構類型lists、maps
    1、---:表示文件之間的分隔符。---前面的行表示一個文件,---後面的行又表示一個文件
    2、-:表示list中的一個元素,多行-就組成了list
    3、除了-開頭的,其他的都是map
    service、deployment、pod。
    deployment:在service與pod之間,定義pod的副本數量【負載均衡個數】

3、Kompose轉換

    Kompose可以方便地將Docker Compose模板轉換成爲Kubernetes的yaml文件,並在Kubernetes集羣上部署和管理應用。
    kompose工具的git地址:https://github.com/kubernetes/kompose
    git上有寫linux獲取鏡像的方式,如下圖:

3.2.4.3 網易在K8S的探索和實踐(網易雲)

參考老師原文檔:E:\meWork\study\project\subject-3\subject-3-k8s\專題三-Kubernetes_學習文檔-N.docx

的“5.6.    K8S 數據持久化

1、準備持久化環境

    1.1、什麼是NFS

        NFS:Network File System,網絡文件系統
             通過NFS,可以像訪問本地文件一樣訪問遠端系統上的文件。

    1.2、NFS原理

主要是通過rpcbind服務,將配置信息推送到相連的其他客戶端(或服務端)

    1.3、NFS服務主要進程

        rpc.nfsd:最主要的NFS進程,管理客戶端是否可登錄
        rpc.mountd:掛載和卸載NFS文件系統,包括權限管理
        rpc.lockd:非必要,管理文件鎖,避免同時寫出錯
        rpc.statd:非必要,檢查文件一致性,可修復文件

    1.4、NFS的關鍵工具

        主要配置文件:/etc/exports
        NFS文件系統維護命令:/usr/bin/exportfs
        共享資源的日誌文件:/var/lib/nfs/*tab
        客戶端查詢共享資源命令:/usr/sbin/showmount
        端口配置:/etc/sysconfig/nfs

2、實現數據持久化

    2.1、PV與PVC

        PV:Persistent Volume(持久卷)【聲明】
        PVC:Persistent Volume Claim(持久卷消費者)【使用者】
     我們採用NFS實現。
     PV是NFS的一個代理,實際上是PV向NFS拿空間。PVC向PV拿空間

3、ConfigMap

    kubernetes通過ConfigMap來實現對容器中應用的配置管理。

    3.1、創建ConfigMap的4種方式

        --from-literal直接在命令行中指定configmap參數創建
            eg:kubectl create configmap test-config1 --from-literal=db.host=172.18.8.200 --from-literal=db.port='3306'
                查看配置內容:kubectl get cm test-config1 -o yaml
        --from-file=<文件>:指定文件創建,即將一個配置文件創建爲一個ConfigMap

echo -n 172.18.8.200 > ./db.host
echo -n 3306 > ./db.port
kubectl create cm test-config2 --from-file=./db.host --from-file=./db.port

        --from-env-file=<文件>:通過一個文件內多個鍵值對
        yaml配置文件:事先寫好標準的configmap的yaml文件,然後kubectl create -f 創建

使用該ConfigMap掛載的Env不會同步更新;
使用該ConfigMap掛載的Volume中的數據需要一段時間(實測大概10秒)才能同步更新。
大多數情況下,配置信息都以文件形式提供,所以在創建ConfigMap時通常採用--from-file或YAML方式,讀取ConfigMap時通常採用Volume方式。

    3.2、ConfigMap的限制

1、ConfigMap必須在pod消費它之前創建,除非被標記爲可選。
2、ConfigMaps用於填充環境變量通過envFrom,它們被認爲具有無效的環境變量名稱的鍵將跳過這些鍵。該pod被允許啓動。將會有一個事件,原因是InvalidVariabelNames,該消息包含被跳過的無效的鍵的列表。
 

 

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