乐趣区

关于node.js:Kubernetes-生产部署实录-基于-sealos-部署-lafjs

阐明

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 开源云开发平台,前端变全栈,无需服务端。

退出移动版