当前位置: 首页 > news >正文

阿里云ECS上搭建生产级Kubernetes集群实战指南

1. 项目背景与核心价值

在云计算时代,容器编排技术已经成为现代应用部署的标准方案。作为一名长期在云计算领域实践的工程师,我最近在阿里云ECS上成功搭建了一套生产可用的Kubernetes集群。整个过程踩过不少坑,也积累了一些实战经验,今天就把这个完整方案分享给大家。

阿里云ECS作为国内领先的云服务器产品,提供了稳定可靠的IaaS层资源。而Kubernetes作为容器编排领域的事实标准,两者结合可以快速构建企业级容器化平台。这种方案特别适合中小型企业快速搭建自己的DevOps基础设施,也适合开发者学习云原生技术栈。

2. 环境准备与资源规划

2.1 服务器选型建议

在阿里云上搭建Kubernetes集群,首先需要考虑ECS实例的选型。根据我的经验:

  • 控制节点(Master):建议至少2核4G配置,生产环境推荐4核8G
  • 工作节点(Node):根据业务负载选择,开发环境2核4G起步
  • 系统盘:建议40GB以上,选择高效云盘或SSD云盘
  • 操作系统:推荐使用Aliyun Linux 2或CentOS 7.9

重要提示:阿里云部分ECS实例规格(如t5突发性能实例)不适合运行Kubernetes,建议选择计算型c6或通用型g6系列实例。

2.2 网络规划要点

  • VPC规划:建议为Kubernetes集群创建独立的VPC
  • 交换机配置:至少配置2个不同可用区的交换机
  • 安全组设置:需要开放6443(API Server)、2379-2380(etcd)等端口
  • 弹性公网IP:建议仅为Master节点配置EIP

3. Kubernetes集群部署实战

3.1 基础环境配置

在所有节点上执行以下基础配置:

# 关闭swap swapoff -a sed -i '/ swap / s/^/#/' /etc/fstab # 关闭SELinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 配置内核参数 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system

3.2 容器运行时安装

推荐使用containerd作为容器运行时:

# 安装containerd yum install -y containerd.io # 配置containerd mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml # 修改sandbox镜像为阿里云镜像 sed -i 's|k8s.gcr.io/pause|registry.aliyuncs.com/google_containers/pause|g' /etc/containerd/config.toml # 启动containerd systemctl enable --now containerd

3.3 Kubernetes组件安装

配置阿里云Kubernetes镜像源:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

安装kubeadm、kubelet和kubectl:

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable --now kubelet

3.4 集群初始化

在Master节点执行初始化:

kubeadm init \ --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=<Master节点内网IP>

初始化完成后,按照提示配置kubectl:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.5 网络插件安装

推荐使用Flannel作为网络插件:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4. 工作节点加入集群

在每个工作节点执行Master节点初始化后提供的join命令:

kubeadm join <Master节点IP>:6443 --token <token> \ --discovery-token-ca-cert-hash sha256:<hash>

加入完成后,在Master节点验证节点状态:

kubectl get nodes

5. 集群验证与基础组件部署

5.1 集群状态检查

# 查看组件状态 kubectl get componentstatuses # 查看pod状态 kubectl get pods --all-namespaces # 查看节点资源使用情况 kubectl top nodes

5.2 部署Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

创建访问令牌:

kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')

6. 生产环境优化建议

6.1 Master节点高可用

生产环境建议部署3个Master节点实现高可用:

  1. 部署负载均衡器(如阿里云SLB)
  2. 使用keepalived+haproxy实现本地负载均衡
  3. 修改kubeadm配置使用VIP地址

6.2 持久化存储方案

推荐使用阿里云CSI插件对接云盘/NAS:

# 安装CSI插件 kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/ack/csi-plugin.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/ack/csi-provisioner.yaml

6.3 监控与日志方案

  • 监控:Prometheus + Grafana
  • 日志:EFK(Elasticsearch + Fluentd + Kibana)
  • 告警:Alertmanager

7. 常见问题排查

7.1 节点NotReady状态排查

  1. 检查kubelet服务状态:systemctl status kubelet
  2. 查看kubelet日志:journalctl -u kubelet -f
  3. 检查网络插件pod状态:kubectl get pods -n kube-system

7.2 Pod一直处于Pending状态

  1. 查看事件详情:kubectl describe pod <pod-name>
  2. 检查资源配额:kubectl describe nodes
  3. 检查存储卷声明:kubectl get pvc

7.3 镜像拉取失败

  1. 配置阿里云镜像加速器
  2. 检查镜像地址是否正确
  3. 检查网络连通性

8. 运维管理技巧

  1. 使用kubectl自动补全:
echo 'source <(kubectl completion bash)' >> ~/.bashrc
  1. 快速查看资源使用:
watch -n 1 kubectl get pods -A
  1. 批量删除异常pod:
kubectl delete pods --field-selector=status.phase=Failed -A
  1. 使用kubectl插件:
# 安装krew插件管理器 ( set -x; cd "$(mktemp -d)" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" && tar zxvf krew.tar.gz && KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/arm.*$/arm/')" && "$KREW" install krew )

在实际运维过程中,我发现阿里云ECS的自动恢复功能对Kubernetes节点异常恢复很有帮助。建议为生产环境节点开启"实例自动恢复"功能,当节点底层硬件故障时,系统会自动迁移实例到健康物理机。

http://www.cnnetsun.cn/news/3627015.html

相关文章:

  • 5大核心功能揭秘:如何用daily_stock_analysis实现零成本AI股票分析
  • React 组件库的 Tree Shaking:按需加载与副作用的工程化治理
  • 如何从视频中提取PPT:面向新手的完整智能提取指南
  • 终极Windows实时语音转文字工具:TMSpeech让你的会议内容一目了然
  • 5大核心技术构建高效抢票自动化系统:从原理到实战的完整指南
  • 华为昇腾系列——使用vllm
  • 坚持成就微光
  • C++类细节梳理之派生和继承
  • 为什么你的提示词改写后效果暴跌?——深度解析语义漂移阈值、意图熵值与可执行性衰减曲线
  • 大学哪些数字营销专业证书值得考
  • 科研新人必备AI文献阅读工具盘点:6款论文总结方案实测对比,组会文献汇报不再慌
  • 连续多年展现统治力,「IM 一哥」融云的通关密码
  • 「Qt Widget中文示例指南」如何实现一个日历?(三)
  • 端到端智驾算法:文章导航页
  • 2026工程水利设计公司测评:水土保持工程施工监理十大选型盘点
  • 【工控选型破局】拒绝盲目溢价与低质陷阱:基于 Modbus-RTU 状态诊断与自适应滑动中值滤波的 C++ 实战,兼论“性价比高又好用的仪器仪表厂家”选型之道
  • Internet Download Manager 6.43 Build 7 完全激活版
  • CTF-NetA终极指南:如何用智能流量分析工具破解CTF中的加密谜题
  • Python 由Excel行列数字得到单元格坐标
  • 终极显示器色彩校准指南:用novideo_srgb轻松解决广色域过饱和问题
  • FreeMove终极指南:5步快速释放C盘空间,智能迁移文件夹不破坏程序
  • android的事件分发机制
  • 品牌出海发稿哪家靠谱?深度拆解朝闻通全链路服务
  • AlienFX Tools终极指南:告别臃肿AWCC,打造轻量级Alienware控制中心
  • MCU基础
  • 系统架构设计师考试:高效备考策略与资源推荐
  • 如何快速选择最佳行情服务器:mootdx智能连接优化指南
  • 深度解析TI ADS8353/7853 ADC评估套件:从硬件设计到性能测试实战
  • 在windows10里的apache2.4加php8.2的环境下上安装Laravel10框架
  • 5分钟掌握PPT悬浮计时器:告别演讲超时的智能解决方案