Kubernetes核心组件
Kubernetes是目前最主流的容器编排平台。理解其核心组件是掌握K8s的第一步:Pod是最小部署单元,Service提供网络抽象,Deployment管理副本,Ingress处理外部流量。
Pod管理与调度
Pod是K8s中最基本的计算单元,可以包含一个或多个容器。
Pod设计模式
- Sidecar模式:主容器+辅助容器(如日志收集、代理)
- Init容器:在主容器启动前执行初始化任务
- Adapters:将不同应用的输出标准化
资源管理
合理设置资源请求和限制是保证集群稳定的关键:
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "512Mi"
cpu: "1000m"
调度策略
- 节点选择器:将Pod调度到特定标签的节点
- 节点亲和性:更灵活的节点选择规则
- Pod亲和性/反亲和性:控制Pod之间的分布关系
服务发现
K8s中的服务发现通过Service和DNS实现。
Service类型
- ClusterIP:集群内部访问,默认类型
- NodePort:通过节点IP和端口访问
- LoadBalancer:云平台负载均衡器
- ExternalName:外部服务的DNS别名
Ingress控制器
Ingress负责将外部HTTP/HTTPS流量路由到集群内部服务:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
自动伸缩
HPA(水平Pod自动伸缩)
基于CPU、内存或自定义指标自动调整Pod数量:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
生产环境运维
监控与日志
- Metrics Server:基础资源指标收集
- Prometheus + Grafana:全面监控方案
- EFK/PLG:日志收集和分析
安全最佳实践
- 使用RBAC控制访问权限
- 启用NetworkPolicy隔离网络
- 使用PodSecurityAdmission限制Pod权限
- 定期更新集群版本和节点镜像
故障排查
常用命令:kubectl describe查看资源详情,kubectl logs查看Pod日志,kubectl exec进入容器调试,kubectl top查看资源使用情况。
掌握这些核心实践,能够帮助团队构建稳定、可扩展的Kubernetes生产集群。
