本文将详细介绍Kubernetes(K8s)的核心概念,包括集群、节点、Pod、服务等。风哥教程参考Kubernetes官方文档内容,为读者提供全面的K8s核心概念解析。
参考Red Hat Enterprise Linux 10官方文档中的System administration章节
Part01-基础概念与理论知识
1.1 Kubernetes概述
Kubernetes是一个开源的容器编排平台,用于自动化部署、扩缩容和管理容器化应用。它提供了容器编排、服务发现、负载均衡、存储编排、自动部署和回滚等功能。更多视频教程www.fgedu.net.cn
1.2 集群(Cluster)
集群是Kubernetes管理的计算资源的集合,由一个或多个控制平面节点和工作节点组成。集群提供了容器的运行环境和管理能力。
1.3 节点(Node)
节点是集群中的工作机器,可以是物理机或虚拟机。节点分为控制平面节点和工作节点,控制平面节点负责集群管理,工作节点负责运行容器。
Part02-生产环境规划与建议
2.1 Pod概念
Pod是Kubernetes中最小的可部署单元,包含一个或多个容器。Pod中的容器共享网络和存储,可以相互通信。Pod是短暂的,可以随时被创建和销毁。
2.2 Service概念
Service是Kubernetes中定义的一种抽象,用于为一组Pod提供稳定的网络访问。Service通过标签选择器选择Pod,并提供负载均衡功能。
2.3 其他核心概念
Kubernetes的其他核心概念:
- Deployment:管理Pod的部署和更新
- ReplicaSet:确保指定数量的Pod副本在运行
- ConfigMap:存储配置数据
- Secret:存储敏感信息
- PersistentVolume:提供持久化存储
Part03-生产环境项目实施方案
3.1 创建Pod
创建Pod的示例:
$ cat fgedu-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: fgedu-pod
labels:
app: fgedu
spec:
containers:
– name: fgedu-container
image: nginx:latest
ports:
– containerPort: 80
# 步骤2:创建Pod
$ kubectl apply -f fgedu-pod.yaml
pod/fgedu-pod created
# 步骤3:查看Pod状态
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
fgedu-pod 1/1 Running 0 10s
# 步骤4:查看Pod详细信息
$ kubectl describe pod fgedu-pod
Name: fgedu-pod
Namespace: default
Priority: 0
Node: worker1/192.168.1.101
Start Time: Wed, 02 Apr 2026 10:00:00 +0800
Labels: app=fgedu
Annotations:
Status: Running
IP: 10.244.1.2
IPs:
IP: 10.244.1.2
Containers:
fgedu-container:
Container ID: docker://1234567890ab
Image: nginx:latest
Image ID: docker-pullable://nginx@sha256:1234567890abcdef
Port: 80/TCP
State: Running
Started: Wed, 02 Apr 2026 10:00:10 +0800
Ready: True
Restart Count: 0
3.2 创建Service
创建Service的示例: from LinuxDBA视频:www.itpux.com
$ cat fgedu-service.yaml
apiVersion: v1
kind: Service
metadata:
name: fgedu-service
spec:
selector:
app: fgedu
ports:
– protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
# 步骤2:创建Service
$ kubectl apply -f fgedu-service.yaml
service/fgedu-service created
# 步骤3:查看Service状态
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
fgedu-service ClusterIP 10.96.0.1
# 步骤4:查看Service详细信息
$ kubectl describe service fgedu-service
Name: fgedu-service
Namespace: default
Labels:
Annotations:
Selector: app=fgedu
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.96.0.1
Port:
TargetPort: 80/TCP
Endpoints: 10.244.1.2:80
Session Affinity: None
Events:
3.3 创建Deployment
创建Deployment的示例:
$ cat fgedu-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fgedu-deployment
labels:
app: fgedu
spec:
replicas: 3
selector:
matchLabels:
app: fgedu
template:
metadata:
labels:
app: fgedu
spec:
containers:
– name: fgedu-container
image: nginx:latest
ports:
– containerPort: 80
# 步骤2:创建Deployment
$ kubectl apply -f fgedu-deployment.yaml
deployment.apps/fgedu-deployment created
# 步骤3:查看Deployment状态
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
fgedu-deployment 3/3 3 3 10s
# 步骤4:查看Pod状态
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
fgedu-deployment-789012-abcde 1/1 Running 0 10s
fgedu-deployment-789012-fghij 1/1 Running 0 10s
fgedu-deployment-789012-klmno 1/1 Running 0 10s
Part04-生产案例与实战讲解
4.1 企业级K8s集群案例
某互联网企业部署K8s集群的案例:
- 集群规模:30+节点
- 应用数量:50+微服务
- 容器数量:500+Pod
- 成果:部署时间从小时级缩短到分钟级,系统可用性提升至99.99%
4.2 应用部署案例
在K8s中部署应用的案例:
$ docker build -t fgedu/webapp:v1 .
Sending build context to Docker daemon 10.24kB
Step 1/6 : FROM python:3.9
—> 1234567890ab
Step 2/6 : WORKDIR /app
—> Running in 1a2b3c4d5e6f
Removing intermediate container 1a2b3c4d5e6f
—> 1234567890cd
Step 3/6 : COPY requirements.txt .
—> 1234567890de
Step 4/6 : RUN pip install –no-cache-dir -r requirements.txt
—> Running in 2a3b4c5d6e7f
Successfully installed Flask-2.3.0
Removing intermediate container 2a3b4c5d6e7f
—> 1234567890ef
Step 5/6 : COPY . .
—> 1234567890f0
Step 6/6 : CMD [“python”, “app.py”]
—> Running in 3a4b5c6d7e8f
Removing intermediate container 3a4b5c6d7e8f
—> 1234567890f1
Successfully built 1234567890f1
Successfully tagged fgedu/webapp:v1
# 步骤2:推送镜像到仓库
$ docker tag fgedu/webapp:v1 registry.fgedu.net.cn/fgedu/webapp:v1
$ docker push registry.fgedu.net.cn/fgedu/webapp:v1
The push refers to repository [registry.fgedu.net.cn/fgedu/webapp]
1234567890ab: Pushed
7890123456cd: Pushed
v1: digest: sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef size: 1234
# 步骤3:部署应用
$ cat webapp-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
labels:
app: webapp
spec:
replicas: 3
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
containers:
– name: webapp
image: registry.fgedu.net.cn/fgedu/webapp:v1
ports:
– containerPort: 8000
—
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
selector:
app: webapp
ports:
– port: 80
targetPort: 8000
type: LoadBalancer
$ kubectl apply -f webapp-deployment.yaml
deployment.apps/webapp created
service/webapp-service created
# 步骤4:查看部署状态
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
webapp-789012-abcde 1/1 Running 0 2m
webapp-789012-fghij 1/1 Running 0 2m
webapp-789012-klmno 1/1 Running 0 2m
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
webapp-service LoadBalancer 10.96.0.1 192.168.1.200 80:31234/TCP 2m
Part05-风哥经验总结与分享
5.1 K8s学习建议
风哥提示:学习Kubernetes的建议:
- 循序渐进:从基础概念开始,逐步学习高级功能
- 实践为主:通过实际操作加深理解
- 官方文档:风哥教程参考Kubernetes官方文档
- 社区资源:利用社区资源解决问题
- 持续学习:关注Kubernetes的最新发展
5.2 常见问题与解决方案
K8s使用的常见问题与解决方案:
- Pod启动失败:查看Pod日志,排查错误原因
- 服务不可访问:检查Service配置和网络策略
- 资源不足:合理配置资源请求和限制
- 镜像拉取失败:检查镜像仓库配置和权限
5.3 最佳实践
K8s使用的最佳实践:
- 使用声明式配置管理资源
- 合理配置资源请求和限制
- 使用标签和注解组织资源
- 建立完善的监控和日志管理
- 定期更新Kubernetes版本
通过本文的介绍,相信读者对Kubernetes的核心概念有了更全面的了解。掌握这些概念是使用Kubernetes的基础,希望本文能够帮助读者入门Kubernetes。学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
from Linux:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
