學(xué)習(xí)日志 211221 部署sts
# 211221
# 刪除sts(statefulset)
- `kubectl delete sts web`
- `kubectl delete svc nginx`
- 之后檢查pv和pvc都還在
? - pvc的狀態(tài)還是bound
- `kubectl delete pvc www-web-0 www-web-1`
? - 再檢查 pvc 和 pv 都沒了
? - 之前pv是動(dòng)態(tài)創(chuàng)建的
# 部署wordpress和mysql
- Example: Deploying WordPress and MySQL with Persistent Volumes
- 下載兩個(gè)現(xiàn)成的k8s描述文件
? - mysql
? - wordpress
- 編寫一個(gè)kustomization.yaml
- 新增secret的部分
- 用resources引入兩個(gè)剛下載的k8s描述文件
- 用 apply -k 應(yīng)用整個(gè)目錄
- 創(chuàng)建了7項(xiàng)資源
? - secret
? - 兩個(gè)service
? - 兩個(gè)pvc
? - 兩個(gè)deployment
- 挨個(gè)檢查上述創(chuàng)建出來的
- 檢查secret
? - `kubectl get secrets`
? - 有兩項(xiàng)結(jié)果
? - default-token這個(gè)無關(guān) 干什么用的?
? - mysql-pass-<id>是我們剛建的
- 檢查pvc
? - `kubectl get pvc`
- 檢查pods
? - 略
- 檢查services
? - 其中wordpress-mysql的類型是ClusterIP
? ? - 只有一個(gè)內(nèi)部端口 3306
? ? - 我們之前做微服務(wù)互調(diào), 被調(diào)用者其實(shí)是不需要外部端口
? ? - 因?yàn)槲覀兊恼{(diào)用者走的是servicename:內(nèi)部端口 的格式發(fā)起調(diào)用
? ? - 所以我們之前的被調(diào)用者其實(shí)也應(yīng)該使用ClusterIP類型的service
? ? - 而不是NodePort
? - wordpress自己的服務(wù)類型是LoadBalancer
? ? - 但是minikube不支持外部loadbalancer, 所以這個(gè)類型退化為nodeport
? ? - 有一個(gè)外部端口供我們?cè)L問
- 結(jié)果 訪問wordpress
? - 按nodeport的方式訪問wordpress服務(wù)
? - 類似 http://192.168.2.15:31112/
- 繼續(xù)測(cè)試
? - 持久化?
? ? - 在wordpress里設(shè)置語言 用戶等信息
? ? - minikube 保存/ 重啟動(dòng)
? ? - 檢查wordpress是否 保有之前的信息
? ? - 結(jié)果 有保留
- 清理
? - `kubectl delete -k ./sts2/`
? - 刪目錄, 首先根據(jù)目錄下的kustomization.yaml
? ? - 這個(gè)文件在該目錄下應(yīng)該是唯一的?
? ? - k8s 1.14 后支持這種格式
? - 結(jié)果 刪除了7個(gè)資源 同上
? - 檢查pvc有沒有被刪除
? - 這次pvc是刪了的
? ? - 因?yàn)檫@次pvc是在描述文件里顯式聲明創(chuàng)建的
? ? - 所以刪描述文件意味著pvc也要被刪掉
- 和我們目標(biāo)有差距
? - 我們希望做一個(gè)mysql多機(jī)集群的示例
? ? - 即水平sharding - 分庫分表(其實(shí)可以不需要分表 分庫就行)
? ? - 分表的意思是把存儲(chǔ)分了, 這次每個(gè)表對(duì)應(yīng)的數(shù)據(jù)量和索引大小有限
? ? - 分表不分cpu和內(nèi)存資源
? ? - 分庫的話就還要分掉cpu和內(nèi)存資源
? ? - 現(xiàn)在用pod虛擬機(jī), 本來就支持小粒度的分cpu和內(nèi)存
? ? - 所以可以不用糾結(jié)只分表不分庫的方案
? - 我們先跑完所有的示例 再研究怎么搞分庫方案
# cassandra示例 只讀
- minikube start 可以指定內(nèi)存和占用cpu數(shù)量
? - `minikube start --memory 5120 --cpus=4`
- 為replicas大于1的情 使用volumeClaimTemplates 分配存儲(chǔ)
- 用edit指令 可以打開一個(gè)編輯器
? - `kubectl edit statefulset cassandra`
? - 等價(jià)于改k8s描述文件 重新apply
- k8s描述文件可以設(shè)置環(huán)境變量
? - 這種方式可以定制化被部署出來的節(jié)點(diǎn)
? - 比如 mysql的 MYSQL_ROOT_PASSWORD 就是按這個(gè)方法做的
? - 環(huán)境變量是名值對(duì), 值可以直接寫value, 也可以用valueFrom從secret里面拿
# zookeeper示例 運(yùn)行
- 概念 新增兩個(gè)
? - PodDisruptionBudgets
? - PodAntiAffinity
- PodDisruptionBudgets
? - pod 損壞預(yù)防
? - 核心理解 預(yù)算(最低pods副本數(shù)) 和 drain 指令
? - drain指令 嘗試 去除pods 但不會(huì)違反預(yù)算 如果違反會(huì)被卡住block
? - 直接有足夠的node加回來
- Affinity and anti-affinity
? - 關(guān)注pod選node
? - 提供更豐富的語法
? - 可以是軟性要求, 即盡量滿足, 不滿足也行
? - 細(xì)節(jié) 略
# 明天繼續(xù)zookeeper示例 TODO
-?今天只有半天的內(nèi)容?較短