K8s核心概念速览:从Pod到Service,10.5交作业。
Kubernetes 学习(一)——Kubernetes 重要基础概念概述
Kubernetes(简称 K8s)是当前最流行的容器编排平台之一,用于自动化部署、扩展和管理容器化应用。理解其核心概念是掌握 Kubernetes 的基础。以下介绍 Kubernetes 的几个关键概念。
容器与 Pod
容器是轻量级的、可移植的运行环境,用于封装应用及其依赖。Kubernetes 不直接管理单个容器,而是通过 Pod 进行管理。Pod 是 Kubernetes 的最小调度单元,可以包含一个或多个容器,共享相同的网络命名空间和存储卷。
一个简单的 Pod 定义示例(YAML 格式):
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
Deployment
Deployment 用于管理 Pod 的声明式更新,确保 Pod 的副本数符合预期,并支持滚动更新和回滚。它通常用于无状态应用的部署。
定义 Deployment 的示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
Service
Pod 是动态创建的,其 IP 地址可能变化。Service 提供稳定的 IP 和 DNS 名称,用于访问一组 Pod。常见的 Service 类型包括 ClusterIP(内部访问)、NodePort(通过节点端口暴露)和 LoadBalancer(云厂商提供的负载均衡)。
定义 Service 的示例:
apiVersion: v1
kind: Service
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
ConfigMap 与 Secret
ConfigMap 用于存储非敏感配置数据(如环境变量),而 Secret 用于存储敏感信息(如密码、密钥)。它们可以被 Pod 挂载或作为环境变量引用。
定义 ConfigMap 的示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database_url: "mysql://db-service:3306"
Namespace
Namespace 用于在同一个 Kubernetes 集群中划分逻辑隔离的环境(如开发、测试、生产)。它可以帮助管理资源配额和访问控制。
创建 Namespace 的示例:
apiVersion: v1
kind: Namespace
metadata:
name: dev
总结
Kubernetes 的核心概念包括 Pod、Deployment、Service、ConfigMap、Secret 和 Namespace。理解这些概念是深入学习 Kubernetes 的基础。后续文章将进一步探讨更高级的功能,如 StatefulSet、Ingress 和 Helm 等。
更多推荐
所有评论(0)