当前位置:首页>Linux>Linux部署kubernetes:从单节点到生产环境完整指南(详细)

Linux部署kubernetes:从单节点到生产环境完整指南(详细)

  • 2026-09-29 12:29:33
Linux部署kubernetes:从单节点到生产环境完整指南(详细)

    在生产环境中,如何高效管理成百上千个容器实例?如何实现服务的高可用和自动扩缩容?Kubernetes作为云原生时代的标准编排工具,能帮你解决这些难题。

    本文将带你从零开始搭建K8s集群,掌握核心组件配置和服务管理技巧。

目录

  1. 1. Kubernetes核心概念
  2. 2. 单节点集群搭建
  3. 3. 多节点集群部署
  4. 4. 服务暴露与负载均衡
  5. 5. 生产环境最佳实践

1. Kubernetes核心概念

    Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。理解其核心组件是集群搭建的基础。

核心组件:

  • • Master节点:集群的大脑,负责集群决策和调度
    • • API Server:集群统一入口
    • • Controller Manager:维护集群状态
    • • Scheduler:分配Pod到节点
  • • Node节点:运行工作负载
    • • Kubelet:节点代理
    • • Kube-proxy:网络代理
    • • Container Runtime:容器运行环境

关键概念:

  • • Pod:K8s最小部署单元,包含一个或多个容器
  • • Service:一组Pod的稳定网络标识
  • • Deployment:声明式部署控制器,管理Pod副本
  • • Ingress:集群入口,管理HTTP/HTTPS路由

2. 单节点集群搭建

对于学习和测试,单节点集群是最快速的方式。

快速搭建方法:使用Minikube一键启动:

1
2
3
4
5
6
7
8
9
10

# 安装Minikubecurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikube# 启动单节点集群minikube start --driver=docker --cpus=2 --memory=4096# 验证集群状态kubectl get nodeskubectl get pods -A

配置说明:

  • • --driver=docker:使用Docker作为运行时
  • • --cpus=2 --memory=4096:分配2核4G资源
  • • 验证成功后,所有Pod将运行在本地

3. 多节点集群部署

生产环境需要多节点集群来保证高可用。

kubeadm集群搭建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 1. 准备三台服务器(1 Master + 2 Worker)# 2. 安装Dockercurl -fsSL https://get.docker.com | sh# 3. 安装kubeadm、kubelet、kubectlapt-get updateapt-get install -y kubelet kubeadm kubectl# 4. 初始化Master节点kubeadm init --apiserver-advertise-address=192.168.1.100 \  --pod-network-cidr=10.244.0.0/16 \  --ignore-preflight-errors=NumCPU# 5. 配置kubectlmkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config# 6. 加入Worker节点kubeadm join 192.168.1.100:6443 \  --token abcdef.0123456789abcdef \  --discovery-token-ca-cert-hash sha256:abcdef...# 7. 验证集群kubectl get nodes

网络配置:

  • • 需要安装网络插件(如Flannel、Calico)
  • • 确保所有节点在同一网络段
  • • Pod网络地址段不能与主机网络冲突

4. 服务暴露与负载均衡

将K8s服务暴露给外部访问有多种方式。

Service类型:

  • • ClusterIP:集群内部访问(默认)
  • • NodePort:通过节点IP+端口访问
  • • LoadBalancer:云厂商负载均衡器
  • • Ingress:基于域名和路径的路由

Ingress配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# ingress.yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: my-app-ingress  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /spec:  rules:  - host: myapp.example.com    http:      paths:      - path: /        pathType: Prefix        backend:          service:            name: my-app            port:              number: 80

1
2
3
4
5

# 应用配置kubectl apply -f ingress.yaml# 验证kubectl get ingress

负载均衡策略:

  • • 配置健康检查,确保流量只转发到健康节点
  • • 使用多个Service实例提高可用性
  • • 结合Ingress Controller实现高级路由规则

5. 生产环境最佳实践

生产环境部署需要考虑稳定性、安全性和可维护性。

资源管理:

1
2
3
4
5
6
7
8

# 设置资源限制resources:  requests:    memory: "256Mi"    cpu: "250m"  limits:    memory: "512Mi"    cpu: "500m"

健康检查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 探针配置livenessProbe:  httpGet:    path: /healthz    port: 8080  initialDelaySeconds: 30  periodSeconds: 10readinessProbe:  httpGet:    path: /ready    port: 8080  initialDelaySeconds: 5  periodSeconds: 5

安全加固:

  • • 使用RBAC控制权限
  • • 配置Pod Security Policy
  • • 启用API Server审计日志
  • • 定期更新集群组件版本

监控与日志:

  • • 部署Prometheus监控
  • • 配置日志收集(如ELK Stack)
  • • 设置告警规则
  • • 定期备份etcd数据

总结

    Kubernetes集群部署涉及多个组件和配置,掌握核心概念是关键。单节点集群适合学习和测试,多节点集群满足生产需求。

最新文章

随机文章