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。
# 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
把下面节点的IP换成服务器的内网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
查看节点运行状态,在 master 节点运行:
kubectl get node
可选择让 master 成为工作节点:
# mark the master worked as worker node
kubectl taint node YOUR_MASTER_NODE_NAME node-role.kubernetes.io/master-
直接参考 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 内网网段冲突。
Maslow (wangfugen@126.com), laf.js 作者。
lafyun.com 开源云开发平台,前端变全栈,无需服务端。