目錄
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,該消息包含被跳過的無效的鍵的列表。