Kubernetes基本概念
外观
Kubernetes基本概念[编辑 | 编辑源代码]
介绍[编辑 | 编辑源代码]
Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由 Google 设计并捐赠给 Cloud Native Computing Foundation(CNCF)。Kubernetes 提供了一套强大的工具来管理分布式系统,确保高可用性、可扩展性和资源效率。
本节将介绍 Kubernetes 的核心概念,帮助初学者和高级用户理解其基本架构和工作原理。
核心组件[编辑 | 编辑源代码]
Kubernetes 由多个组件组成,共同协作以管理容器化应用。以下是关键组件:
控制平面(Control Plane)[编辑 | 编辑源代码]
控制平面负责集群的全局决策和调度,包括以下核心组件:
- API Server:Kubernetes 的入口点,处理所有 REST 请求。
- Scheduler:决定将 Pod 分配到哪个节点运行。
- Controller Manager:运行控制器(如 Deployment、ReplicaSet 控制器),确保集群状态符合预期。
- etcd:分布式键值存储,保存集群的所有配置数据。
工作节点(Worker Node)[编辑 | 编辑源代码]
工作节点是运行容器化应用的机器,包含以下组件:
- kubelet:与 API Server 通信,管理节点上的 Pod 和容器。
- kube-proxy:处理网络规则和负载均衡。
- 容器运行时(如 Docker、containerd):负责运行容器。
基本对象[编辑 | 编辑源代码]
Kubernetes 使用声明式对象模型管理资源。以下是核心对象:
Pod[编辑 | 编辑源代码]
Pod 是 Kubernetes 的最小部署单元,包含一个或多个共享网络和存储的容器。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Deployment[编辑 | 编辑源代码]
Deployment 管理 Pod 的声明式更新,支持滚动升级和回滚。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
Service[编辑 | 编辑源代码]
Service 提供稳定的 IP 和 DNS 名称,用于访问一组 Pod。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
实际案例[编辑 | 编辑源代码]
场景:部署 Web 应用[编辑 | 编辑源代码]
1. 使用 Deployment 创建 3 个 Nginx Pod 副本。 2. 通过 Service 暴露应用,使外部用户可通过负载均衡器访问。
执行以下命令查看状态:
kubectl get pods
kubectl get services
输出示例:
NAME READY STATUS RESTARTS AGE nginx-deployment-756d9fd5f9-2j4r7 1/1 Running 0 1m nginx-deployment-756d9fd5f9-5h6w8 1/1 Running 0 1m nginx-deployment-756d9fd5f9-9k8q2 1/1 Running 0 1m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service LoadBalancer 10.96.100.101 203.0.113.10 80:30001/TCP 1m
扩展知识[编辑 | 编辑源代码]
- 命名空间(Namespace):用于逻辑隔离集群资源(如 `kubectl create namespace dev`)。
- ConfigMap 和 Secret:分别管理配置数据和敏感信息。
- Horizontal Pod Autoscaler(HPA):根据 CPU 使用率自动扩展 Pod。
数学公式示例(资源请求计算):
总结[编辑 | 编辑源代码]
Kubernetes 通过控制平面和工作节点协作,以 Pod、Deployment 和 Service 等对象为核心,实现容器化应用的高效管理。掌握这些基本概念是进一步学习高级主题(如 Helm、Operator)的基础。