K8S
1、项目总览
1.1、最终架构方案
1.2、IP分配规划
1.3、域名规划
1.4、CPU优化指南
1.5、云C部署指南
1.6、部署检查清单
1.7、快速参考手册
2.1、API-VIP高可用配置
2.2、Calico网络配置
2.3、存储方案配置
2.4、Ingress入口配置
2.5、安全加固配置
2.6、etcd优化配置
2.7、灾难恢复配置
2.8、公司网络配置
K8s部署
本文档使用 MrDoc 发布
-
+
首页
1.7、快速参考手册
# 快速参考卡片 ## 📇 关键信息速查 ### ⭐ 集群基本信息 ```yaml 集群名称: KtCloudGroup K8s版本: 最新稳定版(推荐 v1.28.x+) CPU方案: 平衡方案(6C Master / 16C Worker,2.375:1超配) 默认密码: Kt#admin(Harbor、Gitea等服务) VPN方案: 公司网关统一接入(10.255.0.100) DNS方案: CoreDNS(K8s集群内) ``` ### 🌐 网络配置速查 #### WireGuard VPN(10.255.0.0/24) | 节点 | WireGuard IP | 公网IP | 端口 | |------|-------------|--------|------| | 云A | 10.255.0.1 | 185.150.190.216 | 51820 | | 云B | 10.255.0.2 | 104.194.9.56 | 51820 | | 云C | 10.255.0.3 | 199.127.62.90 | 51820 | | 公司 | 10.255.0.100 | 动态IP | 51820 | #### K8s节点内网IP | 节点类型 | 节点名 | IP地址 | 所在服务器 | |---------|--------|--------|-----------| | **Master** | k8s-master-1 | 10.255.0.101 | 云A | | | k8s-master-2 | 10.255.0.102 | 云B | | | k8s-master-3 | 10.255.0.103 | 云C | | **Worker** | k8s-worker-a-1 | 10.255.0.111 | 云A | | | k8s-worker-a-2 | 10.255.0.112 | 云A | | | k8s-worker-b-1 | 10.255.0.113 | 云B | | | k8s-worker-b-2 | 10.255.0.114 | 云B | | | k8s-worker-c-1 | 10.255.0.115 | 云C | | | k8s-worker-c-2 | 10.255.0.116 | 云C | | | k8s-worker-edge | 172.16.100.10 | 公司 | #### API Server访问 ``` API Server VIP: 10.255.0.100:6443 etcd Endpoints: 10.255.0.101:2379, 10.255.0.102:2379, 10.255.0.103:2379 ``` --- ### 🖥️ 虚拟机配置速查 #### VM ID映射 | 云 | Master | Worker-1 | Worker-2 | |----|--------|----------|----------| | 云A | 101 | 102 | 103 | | 云B | 201 | 202 | 203 | | 云C | 301 | 302 | 303 | #### CPU/内存配置(平衡方案 - KtCloudGroup标准) | 节点类型 | CPU | 内存 | 系统盘 | 数据盘 | |---------|-----|------|--------|--------| | Master | 6C | 16G | 100G | - | | Worker | 16C | 52G | 100G | 900G | **超配比例:** 2.375:1(每服务器38C / 16线程 = 2.375倍) --- ### 🔧 常用命令速查 #### PVE管理 ```bash # 查看VM列表 qm list # VM操作 qm start <vmid> qm stop <vmid> qm restart <vmid> qm status <vmid> # 修改CPU qm set <vmid> -cores <数量> # 修改内存 qm set <vmid> -memory <MB> # 进入控制台 qm terminal <vmid> # 克隆VM qm clone <源VMID> <新VMID> --name <新名称> --full ``` #### WireGuard管理 ```bash # 启动 wg-quick up wg0 # 停止 wg-quick down wg0 # 查看状态 wg show # 重启 wg-quick down wg0 && wg-quick up wg0 # 查看连接 wg show wg0 endpoints wg show wg0 latest-handshakes ``` #### K8s节点管理 ```bash # 查看节点 kubectl get nodes kubectl get nodes -o wide # 节点详情 kubectl describe node <节点名> # 节点资源 kubectl top nodes # 驱逐Pod(维护节点) kubectl drain <节点名> --ignore-daemonsets --delete-emptydir-data # 恢复调度 kubectl uncordon <节点名> # 标记不可调度 kubectl cordon <节点名> ``` #### etcd管理 ```bash # 健康检查 kubectl exec -n kube-system etcd-k8s-master-1 -- sh -c \ 'ETCDCTL_API=3 etcdctl endpoint health \ --endpoints=https://10.255.0.101:2379,https://10.255.0.102:2379,https://10.255.0.103:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key' # 成员列表 kubectl exec -n kube-system etcd-k8s-master-1 -- sh -c \ 'ETCDCTL_API=3 etcdctl member list \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key' # 性能测试 kubectl exec -n kube-system etcd-k8s-master-1 -- sh -c \ 'ETCDCTL_API=3 etcdctl check perf \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key' ``` #### K8s集群信息 ```bash # 集群状态 kubectl cluster-info kubectl get cs # 组件状态 # 生成join命令 kubeadm token create --print-join-command # 生成Master join命令 kubeadm init phase upload-certs --upload-certs kubeadm token create --print-join-command --certificate-key <上步输出的key> # 重置节点 kubeadm reset -f ``` --- ### 📊 监控和诊断 #### 网络诊断 ```bash # 延迟测试 ping -c 10 10.255.0.1 # 路由追踪 traceroute 10.255.0.101 # 端口连通性 nc -zv 10.255.0.101 6443 telnet 10.255.0.101 6443 # DNS测试 nslookup kubernetes.default.svc.cluster.local dig kubernetes.default.svc.cluster.local ``` #### 性能监控 ```bash # CPU使用 top htop # CPU窃取率 grep 'cpu ' /proc/stat | awk '{printf "Steal: %.2f%%\n", $9/($2+$3+$4+$5+$6+$7+$8+$9)*100}' # 内存使用 free -h # 磁盘使用 df -h # 网络流量 iftop nethogs ``` #### K8s资源查看 ```bash # Pod列表 kubectl get pods --all-namespaces kubectl get pods -o wide # 服务列表 kubectl get svc --all-namespaces # 存储 kubectl get pv,pvc --all-namespaces # 事件 kubectl get events --all-namespaces --sort-by='.lastTimestamp' # 日志 kubectl logs <pod名> -n <namespace> kubectl logs <pod名> -n <namespace> --previous # 上一次容器日志 ``` --- ### 🌍 域名和DNS #### 管理域名(ktnet.cc)- 内网VPN访问 | 子域名 | 目标 | 用途 | |--------|------|------| | api.ktnet.cc | 10.255.0.100:6443 | K8s API Server | | pve-a.ktnet.cc | 185.150.190.216:8006 | PVE管理界面(云A) | | pve-b.ktnet.cc | 104.194.9.56:8006 | PVE管理界面(云B) | | pve-c.ktnet.cc | 199.127.62.90:8006 | PVE管理界面(云C) | | harbor.ktnet.cc | 10.255.1.10 | Harbor镜像仓库 | | git.ktnet.cc | 10.255.1.12 | Gitea代码仓库 | | running.ktnet.cc | 10.255.1.16 | Running CI/CD | | monitor.ktnet.cc | 10.255.1.11 | Grafana监控 | | logs.ktnet.cc | 10.255.1.13 | Kibana日志 | #### 业务域名(ktcloud.cc)- 公网访问 | 环境 | 子域名模式 | 示例 | |------|-----------|------| | 生产 | `<service>.ktcloud.cc` | ec.ktcloud.cc, pay.ktcloud.cc | | 灰度 | `gray.<service>.ktcloud.cc` | gray.ec.ktcloud.cc | | 测试 | `test.<service>.ktcloud.cc` | test.ec.ktcloud.cc | | 开发 | `dev.<service>.ktcloud.cc` | dev.ec.ktcloud.cc | --- ### 🔐 证书管理 #### 自签名证书(ktnet.cc) ```bash # 生成CA证书 openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ -keyout ca.key -out ca.crt \ -subj "/CN=ktnet.cc CA/O=ktnet.cc" # 生成服务证书 openssl req -newkey rsa:4096 -nodes \ -keyout server.key -out server.csr \ -subj "/CN=*.ktnet.cc/O=ktnet.cc" openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ -CAcreateserial -out server.crt -days 3650 ``` #### Let's Encrypt(ktcloud.cc) ```yaml # cert-manager ClusterIssuer apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: ops@ktnet.cc privateKeySecretRef: name: letsencrypt-prod solvers: - dns01: cloudflare: apiTokenSecretRef: name: cloudflare-api-token key: api-token ``` --- ### 💾 备份命令 #### etcd备份 ```bash # 备份 ETCDCTL_API=3 etcdctl snapshot save /root/etcd-backup-$(date +%Y%m%d).db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key # 验证备份 ETCDCTL_API=3 etcdctl snapshot status /root/etcd-backup-*.db ``` #### K8s资源备份 ```bash # 导出所有资源 kubectl get all --all-namespaces -o yaml > k8s-all-resources.yaml # 导出存储 kubectl get pv,pvc --all-namespaces -o yaml > k8s-storage.yaml # 导出配置 kubectl get cm,secret --all-namespaces -o yaml > k8s-configs.yaml ``` #### PVE配置备份 ```bash # 备份VM配置 cd /etc/pve/qemu-server cp 301.conf 301.conf.bak.$(date +%Y%m%d) # 批量备份 for vm in 101 102 103 201 202 203 301 302 303; do cp ${vm}.conf ${vm}.conf.bak.$(date +%Y%m%d) done ``` --- ### 🚨 应急命令 #### 快速重启服务 ```bash # 重启kubelet systemctl restart kubelet # 重启containerd systemctl restart containerd # 重启WireGuard wg-quick down wg0 && wg-quick up wg0 # 重启PVE网络 systemctl restart networking ``` #### 快速重置VM配置 ```bash # 恢复到KtCloudGroup标准配置(平衡方案:6C Master / 16C Worker) qm stop 301 302 303 qm set 301 -cores 6 # Master-3 qm set 302 -cores 16 # Worker-C-1 qm set 303 -cores 16 # Worker-C-2 qm start 301 302 303 ``` #### 强制删除Pod ```bash # 强制删除卡住的Pod kubectl delete pod <pod名> -n <namespace> --force --grace-period=0 ``` #### 清理失败的节点 ```bash # 从集群移除节点 kubectl delete node <节点名> # 在节点上清理 kubeadm reset -f rm -rf /etc/cni/net.d rm -rf /var/lib/kubelet/* rm -rf /etc/kubernetes/* ``` --- ### 📈 性能基准 #### 预期延迟 | 路径 | 延迟 | 状态 | |------|------|------| | 云A ↔ 云B | <1ms | ✅ 完美 | | 云A ↔ 云C | <1ms | ✅ 完美 | | 云B ↔ 云C | <1ms | ✅ 完美 | | 公司 → 云A | ~180ms | ⚠️ 高延迟 | #### 预期性能指标(平衡方案 - KtCloudGroup标准) | 指标 | 平衡方案(2.375:1) | |------|-----------------| | CPU窃取率 | 3-5% | | etcd P99延迟 | 1-3ms | | API响应 | 15-25ms | | 节点CPU使用 | 70-80% | --- ### 📞 紧急联系 ``` 运维团队: ops@ktnet.cc 技术支持: _____________________ 应急电话: _____________________ ``` --- ### 📖 文档快速链接 | 文档 | 用途 | |------|------| | [1.1、最终架构方案.md](./1.1、最终架构方案.md) | 完整架构方案 | | [1.5、云C部署指南.md](./1.5、云C部署指南.md) | 云C部署步骤 | | [1.6、部署检查清单.md](./1.6、部署检查清单.md) | 部署前检查清单 | | [1.2、IP分配规划.md](./1.2、IP分配规划.md) | IP分配详情 | | [1.3、域名规划.md](./1.3、域名规划.md) | 域名架构 | | [1.4、CPU优化指南.md](./1.4、CPU优化指南.md) | CPU优化方案 | --- **建议打印此文档,部署时随身携带!** 🖨️ --- **版本:** v1.0 **更新时间:** 2025-01-22
arise
2025年11月22日 09:49
转发文档
收藏文档
‹‹
‹
8
/ 17
›
››
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码