一、什么是 Kubernetes
Kubernetes(简称 K8s)是一个开源容器编排引擎,能自动化部署、扩展和管理容器化应用程序。在有多个容器的场景中,它就像一个智能管家,让容器有序协同工作,合理分配资源,保障系统稳定高效运行。
二、为什么需要k8s?
在容器技术普及前,应用部署常面临环境差异、资源浪费、扩展困难等问题。Docker通过容器化技术解决了环境一致性问题,但如何高效管理成百上千的容器?这正是Kubernetes(k8s)的用武之地。
三、Kubernetes与Docker的关系详解
1. 层级关系
层级 | 技术 | 作用 |
---|---|---|
容器运行时 | Docker/Containerd | 提供容器运行环境 |
编排层 | Kubernetes | 管理调度容器集群 |
基础设施 | 物理机/云服务器 | 提供计算资源 |
2. 协作流程
- 开发阶段:用Docker打包应用镜像
- 部署阶段:通过k8s定义Pod、Deployment等资源
- 运行阶段:k8s调度Docker容器到集群节点
- 运维阶段:k8s监控并自动修复异常容器(1)
📌 经典比喻:Docker像是集装箱,标准化了货物包装;Kubernetes像是港口调度系统,管理集装箱的运输、存放和调度。
四、Kubernetes 核心概念
- Pod:Kubernetes 最小的可部署和管理计算单元,一个 Pod 可包含一个或多个紧密相关的容器,这些容器共享网络和存储资源,协同完成任务。
- Service:为一组 Pod 提供固定访问入口,通过标签选择器关联 Pod,实现负载均衡,将外部请求分发到后端多个 Pod,确保应用高可用性。
- Deployment:用于描述应用部署方式和更新策略,通过创建和管理 ReplicaSet 实现 Pod 的创建、更新和回滚,方便控制应用版本。
三者关系总结如下:
概念 | 描述 | 作用 |
Pod | 最小计算单元,可含多个容器 | 封装相关容器,使其协同工作 |
Service | 为 Pod 提供访问入口和负载均衡 | 方便外部访问,实现高可用 |
Deployment | 管理应用部署和更新策略 | 控制应用版本,实现升级 |
五、Kubernetes 基本操作
安装 Kubernetes:本地搭建 Kubernetes 环境可用 Minikube。Linux 系统下,先下载 Minikube 二进制文件,添加可执行权限并移动到执行路径,最后启动 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
minikube start
1. 创建 Pod:编写 YAML 文件定义 Pod,用kubectl apply -f <yaml文件名>命令创建。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
2. 创建 Deployment:编写 YAML 文件定义 Deployment,用kubectl apply -f <yaml文件名>命令创建。
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.14.2
ports:
- containerPort: 80
3. 创建 Service:通过 YAML 文件定义 Service,将 Nginx Pod 暴露,创建后用minikube service nginx-service命令访问。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
六、总结
Kubernetes 结合 Docker,为容器化应用大规模部署和管理提供强大支持。本文仅介绍基本概念和操作,后续还有集群管理、自动扩缩容等深入内容。希望这篇文章能助你开启 Kubernetes 学习之旅。