Kubernetes 生产部署实录

Posted 开水养花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 生产部署实录相关的知识,希望对你有一定的参考价值。

说明

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 内网网段冲突。

Maslow (wangfugen@126.com), laf.js 作者。

lafyun.com 开源云开发平台,前端变全栈,无需服务端。

以上是关于Kubernetes 生产部署实录的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

#yyds干货盘点# Kubernetes helm 如何在生产环境中释放部署生产力?(12)

DBAplus线上分享实录|Kubernetes Master High Availability 高级实践

Kubernetes(k8s)生产级实践指南 从部署到核心应用

kubeadm ansible快速部署kubernetes生产级高可用集群

生产环境中的Kubernetes最佳实践