lafyun.com 是基于開源云開發(fā)平臺(tái)
laf.js 部署的公開運(yùn)營(yíng)版云開發(fā)平臺(tái)。
創(chuàng)新互聯(lián)長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為平輿企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,平輿網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
lafyun.com 內(nèi)測(cè)階段是基于 docker-compose
部署的單機(jī)版,現(xiàn)在平臺(tái)正式開放公測(cè),需要基于 kubernetes
部署集群版。
Kubernetes 的部署采用 sealos 一鍵部署。
系統(tǒng)選擇了 centos 7.9,最初經(jīng)反復(fù)測(cè)試過 Aliyun Linux 3.x,Kubernetes 表現(xiàn)極不穩(wěn)定,系統(tǒng)經(jīng)常會(huì)因?yàn)?OOM 宕機(jī)或斷連等問題,特別是單次啟動(dòng) pod 數(shù)量過百之后,后選擇了 centos 7.9 表現(xiàn)極其穩(wěn)定。
kubernetes 選擇了 v1.23.2,此版本默認(rèn)已不支持 docker ,故容器運(yùn)行時(shí)使用了 containerd。
# install sealos
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && chmod +x sealos && mv sealos /usr/bin
# download sealos kubenetes package
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/28bdc92bd542d599b6ef021b8c2d7886-v1.23.2/kube1.23.2.tar.gz
把下面節(jié)點(diǎn)的IP換成服務(wù)器的內(nèi)網(wǎng)IP即可,確保 master & node 的 ip 互相可連通后:
# init & run the cluster
sealos init --user root \
--master 172.17.xx.xx \
--node 172.17.xx.yy \
--node 172.17.xx.zz \
--pkg-url /root/kube1.23.2.tar.gz \
--version v1.23.2 \
--podcidr 10.160.0.0/12
查看節(jié)點(diǎn)運(yùn)行狀態(tài),在 master 節(jié)點(diǎn)運(yùn)行:
kubectl get node
可選擇讓 master 成為工作節(jié)點(diǎn):
# mark the master worked as worker node
kubectl taint node YOUR_MASTER_NODE_NAME node-role.kubernetes.io/master-
直接參考 laf.js 倉(cāng)庫(kù)下 /deploy/kubernetes
目錄中的配置啟動(dòng)即可。
一、增加 kubernetes 默認(rèn)單個(gè)節(jié)點(diǎn)最大運(yùn)行 110 個(gè) Pod 的限制,在每個(gè)節(jié)點(diǎn)做以下操作:
- 編輯 /var/lib/kubelet/config.yml
,修改 maxPods
字段即可;
- 執(zhí)行 systemctl restart kubelet
使之生效;
二、解除 api-server 默認(rèn)的 qps 限制,否則當(dāng) Pod 數(shù)量超過200時(shí),api-server 可能會(huì)卡死或超時(shí)響應(yīng),導(dǎo)致集群不可用:
- 編輯 /var/lib/kubelet/config.yml
,修改 kubeAPIQPS
字段為 50
或 更大的數(shù)字;
- 修改 kubeAPIBurst
字段為 100
或 更大的數(shù)字;
- 執(zhí)行 systemctl restart kubelet
使之生效;
三、阿里云 ECS DNS 服務(wù)地址與默認(rèn) Pod 網(wǎng)段沖突,導(dǎo)致 Pod 無法訪問外網(wǎng)的問題:
因?yàn)?Sealos 默認(rèn) Pod 網(wǎng)段 為 100.164.x.x/20,與阿里云 默認(rèn) DNS 服務(wù)地址100.x.x.x 沖突,故無法訪問外網(wǎng)域名,需要修改 Pod 網(wǎng)段。
所以,在上面執(zhí)行 sealos init
時(shí)我們已經(jīng)加上了 --podcidr 10.160.0.0/12
選項(xiàng),配置 Pod 網(wǎng)段為 10.160.0.0/12
,已解決此問題。
如果要修改 Pod 網(wǎng)段,請(qǐng)避免使用 172.16.0.0/12
網(wǎng)段,會(huì)與阿里云 ECS 內(nèi)網(wǎng)網(wǎng)段沖突。
Maslow (wangfugen@126.com), laf.js 作者。
lafyun.com 開源云開發(fā)平臺(tái),前端變?nèi)珬?,無需服務(wù)端。