写点什么

TiDB Operator--K8S 集群基础环境配置

  • 2023-02-03
    北京
  • 本文字数:2338 字

    阅读完需:约 8 分钟

作者: lqbyz 原文来源:https://tidb.net/blog/8868bf81


在通过 TiDB Operator 进行退 TiDB 集群管理时,需要对 K8S 集群做软硬件环境的相关配置,保证 TiDB 集群在容器环境下发挥更好的性能,减少一些不必要的错误,保障服务的稳定性。

软件版本要求

防火墙配置

建议关闭防火墙

systemctl stop firewalldsystemctl disable firewalld
复制代码

若无法关闭 firewalld 服务,需打开以下端口:

在 Master 节点上

firewall-cmd --permanent --add-port=6443/tcpfirewall-cmd --permanent --add-port=2379-2380/tcpfirewall-cmd --permanent --add-port=10250/tcpfirewall-cmd --permanent --add-port=10251/tcpfirewall-cmd --permanent --add-port=10252/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --permanent --add-port=8472/udpfirewall-cmd --add-masquerade --permanent
# 当需要在 Master 节点上暴露 NodePort 时候设置firewall-cmd --permanent --add-port=30000-32767/tcp
systemctl restart firewalld
复制代码

在计算节点上

firewall-cmd --permanent --add-port=10250/tcpfirewall-cmd --permanent --add-port=10255/tcpfirewall-cmd --permanent --add-port=8472/udpfirewall-cmd --permanent --add-port=30000-32767/tcpfirewall-cmd --add-masquerade --permanent
systemctl restart firewalld
复制代码

配置 Iptables

FORWARD 链默认配置成 ACCEPT,并将其设置到开机启动脚本里:


iptables -P FORWARD ACCEPT
复制代码

禁用 SELinux

setenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
复制代码

关闭 Swap

swapoff -ased -i 's/^\(.*swap.*\)$/#\1/' /etc/fstab
复制代码

内核参数设置

modprobe br_netfilter
cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-arptables = 1net.core.somaxconn = 32768vm.swappiness = 0net.ipv4.tcp_syncookies = 0net.ipv4.ip_forward = 1fs.file-max = 1000000fs.inotify.max_user_watches = 1048576fs.inotify.max_user_instances = 1024net.ipv4.conf.all.rp_filter = 1net.ipv4.neigh.default.gc_thresh1 = 80000net.ipv4.neigh.default.gc_thresh2 = 90000net.ipv4.neigh.default.gc_thresh3 = 100000EOF
sysctl --system
复制代码

配置 Irqbalance 服务

Irqbalance 服务可以将各个设备对应的中断号分别绑定到不同的 CPU 上,以防止所有中断请求都落在同一个 CPU 上而引发性能瓶颈。


systemctl enable irqbalancesystemctl start irqbalance
复制代码

CPUfreq 调节器模式设置

为了让 CPU 发挥最大性能,请将 CPUfreq 调节器模式设置为 performance 模式。详细参考在部署目标机器上配置 CPUfreq 调节器模式


cpupower frequency-set --governor performance
复制代码

Ulimit 设置

cat <<EOF >>  /etc/security/limits.confroot        soft        nofile        1048576root        hard        nofile        1048576root        soft        stack         10240EOF
sysctl --system
复制代码

Docker 服务

Docker 的数据目录设置,--data-root通过来设置

cat > /etc/docker/daemon.json <<EOF{  "exec-opts": ["native.cgroupdriver=systemd"],  "log-driver": "json-file",  "log-opts": {    "max-size": "100m"  },  "storage-driver": "overlay2",  "storage-opts": [    "overlay2.override_kernel_check=true"  ],  "data-root": "/data1/docker"}EOF
复制代码

设置 Docker daemon 的 ulimit。

  • 创建 docker service 的 systemd drop-in 目录 /etc/systemd/system/docker.service.d

  • 创建 /etc/systemd/system/docker.service.d/limit-nofile.conf 文件,并配置 LimitNOFILE 参数的值,取值范围为大于等于 1048576 的数字即可

  • 重新加载配置

Kubernetes 服务

修改 kubelet 的数据目录

echo "KUBELET_EXTRA_ARGS=--root-dir=/data1/kubelet" > /etc/sysconfig/kubeletsystemctl restart kubelet
复制代码

通过 kubelet 设置预留资源

保证机器上的系统进程以及 Kubernetes 的核心进程在工作负载很高的情况下仍然有足够的资源来运行,从而保证整个系统的稳定。


--system-reserved=cpu=200m,memory=1Gi,ephemeral-storage=5Gi \--eviction-hard=memory.available<2Gi,nodefs.available<1Gi,imagefs.available<1Gi \--eviction-minimum-reclaim=memory.available=1Gi,nodefs.available=500Mi,imagefs.available=1Gi \--node-status-update-frequency=10s --eviction-pressure-transition-period=30s"
复制代码

TiDB 集群资源需求

请根据服务器建议配置来规划机器的配置。


TiDB 存储类型推荐

TiKV 存储推荐

TiKV 自身借助 Raft 实现了数据复制,出现节点故障后,PD 会自动进行数据调度补齐缺失的数据副本,同时 TiKV 要求存储有较低的读写延迟,所以生产环境强烈推荐使用本地 SSD 存储。

PD 存储推荐

PD 同样借助 Raft 实现了数据复制,但作为存储集群元信息的数据库,并不是 IO 密集型应用,所以一般本地普通 SAS 盘或网络 SSD 存储(例如 AWS 上 gp2 类型的 EBS 存储卷,GCP 上的持久化 SSD 盘)就可以满足要求。

监控和其他组件

监控组件以及 TiDB Binlog、备份等工具,由于自身没有做多副本冗余,所以为保证可用性,推荐用网络存储。其中 TiDB Binlog 的 pump 和 drainer 组件属于 IO 密集型应用,需要较低的读写延迟,所以推荐用高性能的网络存储(例如 AWS 上的 io1 类型的 EBS 存储卷,GCP 上的持久化 SSD 盘)。


在利用 TiDB Operator 部署 TiDB 集群或者备份工具的时候,需要持久化存储的组件都可以通过 values.yaml 配置文件中对应的 storageClassName 设置存储类型。不设置时默认都使用 local-storage


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB Operator--K8S集群基础环境配置_实践案例_TiDB 社区干货传送门_InfoQ写作社区