1. Kubernetes 架构概览
-
主节点(Master) :
负责集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存储。
-
工作节点(Node) :
运行 Pod 和容器,包含 kubelet、kube-proxy 以及容器运行时(如 containerd、CRI-O)。
-
Pod :
最小的调度单位,一个 Pod 内可包含一个或多个紧密关联的容器,通常共享网络命名空间和存储卷。
-
Service :
提供对一组 Pod 的稳定访问,通过 ClusterIP、NodePort、LoadBalancer 等方式实现服务暴露。
-
Namespace :
用于逻辑隔离不同项目或团队的资源,方便管理和配额控制。
2. 常用 kubectl 命令
-
查看集群状态:
-
kubectl get nodes
:列出所有节点。 -
kubectl get pods --all-namespaces
:查看所有 Pod 状态。 -
kubectl cluster-info
:查看集群基本信息。
-
-
资源管理:
-
kubectl get <资源类型>
(如 pods、services、deployments) -
kubectl describe <资源类型> <名称>
:查看资源详情。 -
kubectl delete <资源类型> <名称>
:删除资源。 -
kubectl apply -f <yaml文件>
:应用配置文件创建或更新资源。 -
kubectl edit <资源类型> <名称>
:在线编辑资源配置。
-
-
日志和调试:
-
kubectl logs <pod名称> [-c 容器名称]
:查看 Pod 日志。 -
kubectl exec -it <pod名称> -- /bin/bash
:进入 Pod 内部调试。 -
kubectl port-forward <pod名称> 本地端口:容器端口
:端口转发,便于调试内部服务。
-
-
资源监控:
kubectl top nodes
和kubectl top pods
:显示节点和 Pod 的资源使用情况(需 Metrics Server 支持)。
3. 部署与扩展
-
Deployment 和 ReplicaSet:
-
使用 Deployment 管理应用的声明式更新和版本回滚。
-
kubectl rollout status deployment/<名称>
:查看部署状态。 -
kubectl rollout history deployment/<名称>
:查看更新历史。
-
-
StatefulSet:
用于有状态服务,如数据库集群,保证 Pod 顺序启动与稳定的持久化存储。
-
DaemonSet:
在每个节点上部署一个 Pod,用于日志收集(如 Filebeat)、监控代理等场景。
-
Job 与 CronJob:
-
Job 用于一次性任务。
-
CronJob 用于周期性任务调度。
-
4. 网络与服务发现
-
Service 类型:
-
ClusterIP(默认):集群内部访问。
-
NodePort:暴露固定端口,外部可通过节点 IP 访问。
-
LoadBalancer:结合云厂商负载均衡器,实现外部访问。
-
-
Ingress:
定义集群外部访问路由规则,并通过 Ingress Controller 实现负载均衡与 SSL/TLS 终结。
5. 存储与数据持久化
-
Volume 与 PersistentVolume(PV)/PersistentVolumeClaim(PVC):
-
临时存储由 Pod 生命周期管理。
-
PV/PVC 模型用于提供持久存储,支持动态或静态分配存储资源。
-
-
ConfigMap 和 Secret:
-
ConfigMap 用于管理非敏感配置信息。
-
Secret 用于存储敏感数据(如密码、密钥等),以 Base64 方式编码。
-
6. 调试与排查
-
事件查看:
kubectl get events --sort-by='.lastTimestamp'
:查看最近的集群事件,排查错误或警告。
-
诊断工具:
-
使用
kubectl describe
检查资源详细状态。 -
使用
kubectl logs
结合grep
命令过滤关键字,定位问题。 -
利用 Dashboard、Prometheus、Grafana 等监控工具实时观察指标变化。
-
7. 自动化与运维
-
Helm
使用 Helm 包管理工具,可以将常用应用打包成 Chart,简化部署和版本管理。
-
CI/CD 集成
结合 Jenkins、GitLab CI 等工具,实现 Kubernetes 集群的自动部署和滚动更新。
-
资源配额与限额
通过 LimitRange 和 ResourceQuota 控制 Namespace 内资源使用,防止单个团队或应用占用过多资源。
8. 安全与访问控制
-
RBAC(基于角色的访问控制):
配置 ClusterRole、Role 和 RoleBinding 控制集群资源的访问权限。
-
网络策略(Network Policy):
限制 Pod 之间或与外部的网络流量,增强安全性。
-
审计日志
开启 Kubernetes 审计日志,记录 API 调用情况,便于安全追溯。
9. 其他常用工具和实践
-
Kubectl 插件
如
kubectx
与kubens
分别用于切换集群和 Namespace;stern
用于多 Pod 日志实时跟踪。 -
配置管理
使用 GitOps 流程(如 ArgoCD、Flux)管理 Kubernetes 配置,实现版本化和自动化部署。
-
资源监控与告警
结合 Prometheus、Grafana 以及 Alertmanager,对集群健康状态进行实时监控和告警。