阐明
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 package
wget -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 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
间接参考 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 开源云开发平台,前端变全栈,无需服务端。