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

Kubernetes集群快速搭建指南

Kubernetes集群快速搭建指南

引言:Kubernetes的时代

哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是复杂的环境搭建。但Kubernetes作为云原生时代的基础设施,你不得不掌握它。今天,我就给你们整一套硬核的Kubernetes集群快速搭建方案,直接上代码,不玩虚的!

一、搭建前的准备

1. 硬件要求

  • Master节点:2核CPU,4GB内存,50GB磁盘
  • Worker节点:1核CPU,2GB内存,20GB磁盘
  • 网络要求:所有节点之间网络互通

2. 系统要求

  • 操作系统:Ubuntu 20.04 LTS 或 CentOS 7/8
  • Docker:19.03+ 版本
  • kubeadm:1.21+ 版本

3. 环境准备

# 更新系统 apt update && apt upgrade -y # 关闭防火墙 ufw disable # 关闭selinux setenforce 0 # 关闭swap swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 配置内核参数 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system

二、安装Docker

# 安装Docker apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt update && apt install -y docker-ce docker-ce-cli containerd.io # 配置Docker daemon cat > /etc/docker/daemon.json << EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF # 重启Docker systemctl restart docker systemctl enable docker

三、安装Kubernetes组件

# 添加Kubernetes源 curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat > /etc/apt/sources.list.d/kubernetes.list << EOF deb https://apt.kubernetes.io/ kubernetes-xenial main EOF # 安装kubeadm、kubelet、kubectl apt update && apt install -y kubeadm=1.21.0-00 kubelet=1.21.0-00 kubectl=1.21.0-00 # 固定版本 apt-mark hold kubeadm kubelet kubectl # 启动kubelet systemctl enable kubelet systemctl start kubelet

四、初始化Master节点

# 初始化Master节点 kubeadm init --kubernetes-version=v1.21.0 --pod-network-cidr=10.244.0.0/16 # 配置kubectl mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config # 安装网络插件(Calico) kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 查看集群状态 kubectl get nodes kubectl get pods -n kube-system

五、添加Worker节点

# 在Master节点上生成加入命令 kubeadm token create --print-join-command # 在Worker节点上执行加入命令 # 示例:kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 在Master节点上查看节点状态 kubectl get nodes

六、使用Minikube快速搭建单节点集群

# 安装Minikube curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 install minikube-linux-amd64 /usr/local/bin/minikube # 启动Minikube minikube start --driver=docker # 查看集群状态 minikube status kubectl get nodes

七、使用K3s搭建轻量级集群

# 安装K3s Master节点 curl -sfL https://get.k3s.io | sh - # 查看节点状态 kubectl get nodes # 获取加入令牌 cat /var/lib/rancher/k3s/server/node-token # 在Worker节点上安装 curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 K3S_TOKEN=<token> sh -

八、集群配置和验证

1. 配置Pod安全策略

# pod-security-policy.yaml apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restricted annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' spec: privileged: false allowPrivilegeEscalation: false requiredDropCapabilities: - ALL volumes: - 'configMap' - 'emptyDir' - 'projected' - 'secret' - 'downwardAPI' - 'persistentVolumeClaim' hostNetwork: false hostIPC: false hostPID: false runAsUser: rule: 'MustRunAsNonRoot' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'MustRunAs' ranges: - min: 1 max: 65535 fsGroup: rule: 'MustRunAs' ranges: - min: 1 max: 65535

2. 部署测试应用

# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.10 ports: - containerPort: 80
# 部署应用 kubectl apply -f nginx-deployment.yaml # 查看应用状态 kubectl get pods # 暴露服务 kubectl expose deployment nginx --type=NodePort --port=80 # 查看服务 kubectl get services

3. 集群健康检查

# 检查节点状态 kubectl get nodes # 检查系统组件 kubectl get pods -n kube-system # 检查集群信息 kubectl cluster-info # 检查API服务器 kubectl get --raw='/healthz'

九、常见问题和解决方案

1. 节点无法加入集群

问题:Worker节点加入集群失败,提示连接超时

解决方案

  • 检查Master节点的防火墙是否关闭
  • 检查网络连接是否正常
  • 检查令牌是否过期,重新生成令牌
# 重新生成令牌 kubeadm token create --print-join-command

2. Pod网络无法通信

问题:Pod之间无法通信,网络插件未正常运行

解决方案

  • 检查网络插件是否正确安装
  • 检查节点间网络是否互通
  • 检查防火墙规则
# 检查Calico状态 kubectl get pods -n calico-system # 查看网络插件日志 kubectl logs -n calico-system <calico-pod-name>

3. 资源不足

问题:Pod调度失败,提示资源不足

解决方案

  • 增加节点资源
  • 调整Pod资源请求和限制
  • 清理不需要的Pod
# 查看节点资源使用情况 kubectl describe node <node-name> # 查看Pod资源使用情况 kubectl top pods

十、最佳实践

1. 生产环境最佳实践

  • 高可用集群:部署多个Master节点,实现高可用
  • 备份:定期备份etcd数据
  • 监控:部署Prometheus和Grafana监控集群
  • 日志管理:部署ELK或Loki收集和分析日志
  • 安全:配置RBAC、Pod安全策略和网络策略

2. 性能优化

  • 资源限制:为所有Pod设置资源请求和限制
  • 节点亲和性:合理配置Pod的节点亲和性
  • 水平扩展:使用HPA实现自动水平扩展
  • 存储优化:使用合适的存储类和持久卷

3. 日常维护

  • 定期更新:定期更新Kubernetes版本
  • 节点维护:使用cordon和drain进行节点维护
  • 清理资源:定期清理不需要的资源
  • 健康检查:定期进行集群健康检查

十一、实战案例

案例:搭建高可用Kubernetes集群

环境

  • 3个Master节点
  • 3个Worker节点
  • 负载均衡器(HAProxy)

步骤

  1. 配置负载均衡器,转发API服务器流量
  2. 在第一个Master节点上初始化集群
  3. 在其他Master节点上加入集群
  4. 在Worker节点上加入集群
  5. 部署网络插件和其他组件

成果

  • 高可用Kubernetes集群
  • 自动故障转移
  • 负载均衡
  • 弹性扩展

结论:Kubernetes集群搭建的未来

炸了!Kubernetes集群搭建已经变得越来越简单,从复杂的手动配置到现在的一键部署,大大降低了使用门槛。作为前端开发者,掌握Kubernetes集群搭建是进入云原生时代的必备技能。

记住,直接上代码,别整那些花里胡哨的!Kubernetes集群搭建,就是要硬核、高效、稳定。

这就是技术的生机所在。

http://www.jsqmd.com/news/583935/

相关文章:

  • 2025-2026年杭州会计师事务所推荐:五大口碑服务评测对比领先 - 品牌推荐
  • [AI应用框架/Java] Spring AI 应用开发指南<>概述、快速入门
  • 2025-2026年国内水乳品牌推荐:五大口碑产品评测对比领先 - 品牌推荐
  • 技术创业中的项目管理:从内核开发到产品落地
  • 2025-2026年杭州会计师事务所推荐:五大口碑服务评测对比顶尖 - 品牌推荐
  • OpenClaw多模态技能扩展:用Qwen3.5-9B实现截图OCR自动归档
  • Docker容器优化全攻略
  • wso~.升级到.需要更新的数据表
  • 客户和采购都在用豆包、deepseek查资料,怎么才能让这些国内头部大模型在回答时优先推荐公司的产品?
  • 2025-2026年全球水乳品牌推荐:TOP5口碑产品评测对比顶尖 - 品牌推荐
  • Ubuntu升级Python后终端崩溃修复指南,LangChain 学习 - LangChain 引入(LangChain 概述、LangChain 的使用场景、LangChain 架构设计)。
  • seo推广外包需要多少投入_seo推广外包如何避免被算法惩罚
  • 百川2-13B-4bits量化版API封装:为OpenClaw构建稳定调用层
  • 2025-2026年杭州会计师事务所推荐:五大口碑服务评测对比顶尖。 - 品牌推荐
  • javascript之Dom查询操作1
  • 从工业5.0到实战:一个智能仓库管理系统的设计与Flutter优化
  • 基于双有源桥DAB控制的功率均衡与动态特性提升技术的研究与实践
  • 基于Python的毕业生实习管理系统
  • 云原生监控系统搭建实战
  • 技术创业中的团队建设:从内核开发到跨职能协作
  • MySQL的HAVING:掌握分组过滤的高级用法(实战详解)
  • 从节点控制到交付物追踪,7款项目里程碑软件推荐
  • (23)ArcGIS Pro 空间连接与缓冲区分析:属性传递、多环缓冲区实战全攻略
  • 2026年4月加拿大移民中介推荐:TOP5口碑服务评测对比领先 - 品牌推荐
  • 2026年4月3日 理论基石:数据量与模型参数量的关系
  • Adafruit NeoTrellis M4底层驱动与交互设计解析
  • LVGL虚拟摇杆库:轻量级二维触控输入控件
  • expected_conditions(EC)与元素相关的常用方法
  • 技术创业中的技术选型:从内核到云原生
  • 2025-2026年杭州会计师事务所推荐:五大口碑服务评测评价领先 - 品牌推荐