阐明
lafyun.com 是基于开源云开发平台
laf.js 部署的公开经营版云开发平台。
lafyun.com 内测阶段是基于 docker-compose
部署的单机版,当初平台正式凋谢公测,须要基于 kubernetes
部署集群版。
环境筹备
Kubernetes 的部署采纳 sealos 一键部署。
零碎抉择了 centos 7.9,最后经重复测试过 Aliyun Linux 3.x,Kubernetes 体现极不稳固,零碎常常会因为 OOM 宕机或断连等问题,特地是单次启动 pod 数量过百之后,后抉择了 centos 7.9 体现极其稳固。
kubernetes 抉择了 v1.23.2,此版本默认已不反对 docker ,故容器运行时应用了 containerd。
装置 sealos
# install sealos wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && chmod +x sealos && mv sealos /usr/bin # download sealos kubenetes packagewget -c https://sealyun.oss-cn-beijing.aliyuncs.com/28bdc92bd542d599b6ef021b8c2d7886-v1.23.2/kube1.23.2.tar.gz
部署 kubernetes
把上面节点的IP换成服务器的内网IP即可,确保 master & node 的 ip 相互可连通后:
# init & run the clustersealos 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
查看节点运行状态,在 master 节点运行:
kubectl get node
可抉择让 master 成为工作节点:
# mark the master worked as worker nodekubectl taint node YOUR_MASTER_NODE_NAME node-role.kubernetes.io/master-
部署 laf.js
间接参考 laf.js 仓库下 /deploy/kubernetes
目录中的配置启动即可。
常见问题
一、减少 kubernetes 默认单个节点最大运行 110 个 Pod 的限度,在每个节点做以下操作:
- 编辑 `/var/lib/kubelet/config.yml`,批改 `maxPods` 字段即可; - 执行 `systemctl restart kubelet` 使之失效;
二、解除 api-server 默认的 qps 限度,否则当 Pod 数量超过200时,api-server 可能会卡死或超时响应,导致集群不可用:
- 编辑 `/var/lib/kubelet/config.yml`,批改 `kubeAPIQPS` 字段为 `50` 或 更大的数字; - 批改 `kubeAPIBurst` 字段为 `100` 或 更大的数字; - 执行 `systemctl restart kubelet` 使之失效;
三、阿里云 ECS DNS 服务地址与默认 Pod 网段抵触,导致 Pod 无法访问外网的问题:
因为 Sealos 默认 Pod 网段 为 100.164.x.x/20,与阿里云 默认 DNS 服务地址100.x.x.x 抵触,故无法访问外网域名,须要批改 Pod 网段。
所以,在下面执行 sealos init
时咱们曾经加上了 --podcidr 10.160.0.0/12
选项,配置 Pod 网段为 10.160.0.0/12
,已解决此问题。
如果要批改 Pod 网段,请防止应用 172.16.0.0/12
网段,会与阿里云 ECS 内网网段抵触。
By Maslow (wangfugen@126.com), laf.js 作者。
lafyun.com 开源云开发平台,前端变全栈,无需服务端。