1. 首页 > Linux教程 > 正文

Linux教程FG013-K8s核心概念入门(集群/节点/Pod/服务)

本文将详细介绍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的示例:

# 步骤1:创建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

# 步骤1:创建Service配置文件
$ 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 80/TCP 10s

# 步骤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: 80/TCP
TargetPort: 80/TCP
Endpoints: 10.244.1.2:80
Session Affinity: None
Events:

3.3 创建Deployment

创建Deployment的示例:

# 步骤1:创建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中部署应用的案例:

# 步骤1:构建应用镜像
$ 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管理体系,包括监控、日志、备份等,以确保集群的稳定运行。学习交流加群风哥微信: itpux-com

通过本文的介绍,相信读者对Kubernetes的核心概念有了更全面的了解。掌握这些概念是使用Kubernetes的基础,希望本文能够帮助读者入门Kubernetes。学习交流加群风哥QQ113257174

更多学习教程公众号风哥教程itpux_com

from Linux:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息