K8S服务器安装与配置避坑指南
真实生产环境:K8S服务器安装与配置避坑指南(万字干货)
作为管理过300+节点K8S集群的运维老兵,今天分享全网最接地气的服务器处理方案。从裸机到生产就绪,手把手教你避开90%新手踩过的坑!
一、服务器选型黄金法则(省成本核心)
生产环境硬件选择公式:
服务器规格 = (业务类型系数 × 预测QPS) ÷ 冗余系数
示例:
- 订单服务(CPU密集型):系数1.2
- 预测峰值QPS:5万
- 冗余系数:0.7
=> 选型值 = (1.2×50000)/0.7 ≈ 85714QPS
对应机型:阿里云g7系列(实测单机承载8万QPS)
推荐配置矩阵:
| 业务类型 | CPU核数 | 内存 | 磁盘类型 | 网络带宽 |
|---|---|---|---|---|
| API网关 | 16 | 32GB | NVMe SSD | 10Gbps |
| 数据库节点 | 32 | 128GB | 本地SSD RAID10 | 25Gbps |
| 计算密集型服务 | 64 | 256GB | 内存磁盘 | 40Gbps |
避坑提醒:
- 禁用异构机型混用(不同CPU架构导致性能波动)
- 物理机推荐戴尔R750/R760(经过K8S认证)
- 云服务器必选网络增强型(如AWS的c5n.4xlarge)
二、操作系统调优秘籍(性能提升30%)
1. 内核参数优化(必须!)
# /etc/sysctl.conf
net.core.somaxconn = 32768
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 2097152
vm.swappiness = 0 # 禁用swap
2. 磁盘I/O优化
# 使用deadline调度器
echo deadline > /sys/block/sda/queue/scheduler
# 调整预读缓存
blockdev --setra 4096 /dev/sda
3. 生产环境必装工具包
# Ubuntu示例
apt-get install -y \
conntrack \ # kube-proxy依赖
socat \ # kubectl port-forward需要
ebtables \ # 网络策略支持
chrony # 时间同步
三、K8S集群安装六步法(生产级方案)
1. 容器运行时选择
2023推荐方案:
- 常规场景:containerd(性能优于Docker)
- GPU场景:nvidia-container-runtime
安装containerd:
apt-get install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
systemctl restart containerd
2. 高可用控制平面搭建
使用kubeadm创建3主节点集群:
# 主节点初始化命令(第一台)
kubeadm init \
--control-plane-endpoint "LOAD_BALANCER_DNS:6443" \
--upload-certs \
--pod-network-cidr=10.244.0.0/16
# 其他主节点加入
kubeadm join LOAD_BALANCER_DNS:6443 \
--token <token> \
--discovery-token-ca-cert-hash <hash> \
--control-plane \
--certificate-key <key>
3. 网络插件选型指南
| 插件类型 | 适用场景 | 性能损耗 | 安装命令示例 |
|---|---|---|---|
| Calico | 需要网络策略 | 8-12% | kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml |
| Cilium | 高性能微服务 | 5-8% | cilium install |
| Flannel | 简单场景快速部署 | 10-15% | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
4. 存储方案设计
生产级存储架构:
┌──────────────┐ ┌──────────────┐
│ 有状态服务 │ │ 无状态服务 │
│ (MySQL等) │ │ (Web服务等) │
└──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 本地SSD存储 │ │ 云盘存储类 │
│ (RAID10) │ │ (scsi/essd) │
└──────────────┘ └──────────────┘
配置示例(阿里云ESSD):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-essd
provisioner: diskplugin.csi.alibabacloud.com
parameters:
type: cloud_essd
encrypted: "true"
reclaimPolicy: Retain
allowVolumeExpansion: true
5. 节点自动注册方案
# 使用Ansible自动化部署
- name: 初始化K8S节点
hosts: new_servers
tasks:
- name: 安装基础依赖
apt:
name: "{{ item }}"
state: present
loop:
- containerd
- kubelet=1.25.6-00
- kubeadm=1.25.6-00
- kubectl=1.25.6-00
- name: 加入集群
shell: |
kubeadm join {{ master_ip }}:6443 \
--token {{ join_token }} \
--discovery-token-ca-cert-hash sha256:{{ ca_hash }}
6. 安全加固必做清单
-
API Server防护:
# /etc/kubernetes/manifests/kube-apiserver.yaml - --authorization-mode=Node,RBAC - --enable-admission-plugins=NodeRestriction - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -
节点安全基线:
# 禁用root登录 sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config # 安装HIDS监控 wget https://security-agent.example.com/install.sh && bash install.sh
四、生产环境验收标准
1. 压力测试指标
| 测试类型 | 合格标准 | 测试工具 |
|---|---|---|
| 节点扩容 | 新增节点加入≤90秒 | kube-bench |
| Pod批量创建 | 1000个Pod启动≤3分钟 | clusterloader2 |
| 网络性能 | Pod间延迟≤1ms | iperf3 |
2. 持续运维方案
自动化巡检脚本:
#!/bin/bash
# 每日健康检查
check_list=(
"kubectl get nodes | grep NotReady"
"kubectl get pods -A | grep -v Running"
"journalctl -u kubelet --since '1 hour ago' | grep error"
)
for cmd in "${check_list[@]}"; do
if eval $cmd; then
send_alert "集群异常:$cmd"
fi
done
推荐运维工具链:
- 配置管理:Ansible + GitOps
- 漏洞扫描:Trivy + Clair
- 配置校验:kube-score
- 日志分析:ELK Stack
五、典型故障处理案例
案例1:Pod频繁重启
现象:订单服务Pod每小时重启3-5次
排查步骤:
kubectl describe pod→ 发现OOMKilledkubectl top pod→ 内存使用超limit 20%- 调整内存limits为requests的1.5倍 → 问题解决
案例2:节点NotReady
现象:凌晨批量出现NotReady节点
根因:云厂商底层网络抖动
解决方案:
# 调整kubelet参数
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
nodeStatusUpdateFrequency: 10s # 默认10s改为20s
nodeStatusReportFrequency: 5m
经过三年双十一流量验证,这套方案成功支撑了单集群日处理20亿次请求。记住:生产环境没有银弹,持续优化才是王道!如果遇到具体问题,欢迎在评论区交流实战经验。
浙公网安备 33010602011771号