Docker快速入门-第15章 Docker Desktop 使用 Kubernetes
第15章 Docker Desktop 使用 Kubernetes
🐳 15.1 Kubernetes基本概念
15.1.1 集群
集群 是一组用于运行容器化应用的节点计算机,Kubernetes运行的其实就是集群。
集群至少包含一个 控制平面(Control Plane)和一个或多个 计算机器或 节点(Node)。
控制平面负责维护集群的预期状态,例如运行哪个应用以及使用哪个容器镜像。
节点负责应用和工作负载的实际运行。
集群是 Kubernetes 的核心优势,能够在内部或云端跨一组机器(物理机、虚拟机都可以)调度和运行容器。
15.1.2 容器
Container(容器) 是一种便携式、轻量级的操作系统级虚拟化技术。
它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境。
容器体积小且启动快,可以在每个容器镜像中打包一个应用程序。
这种一对一的应用镜像关系解决了从开发到生产环境的一致性问题。
15.1.3 Pod
Pod 是Kubernetes中调度的单位,每个 Pod 可以包含一个或多个紧密关联的容器。
Pod 是一组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace。
Pod 是 Kubernetes 调度的基本单位,保证属于同一 Pod 的容器可以一起调度到同一台计算机上。
Pod 内的多个容器共享网络和文件系统,通过进程间通信和文件共享这种方式组合完成服务。
Pod 示例定义
yaml
Copy
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
15.1.4 Node
Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。
每个 Node 节点上至少要运行 container runtime(如 docker 或者 rkt)、kubelet 和 kube-proxy 服务。
15.1.5 Namespace
Namespace 是对一组资源和对象的抽象集合。
用于将系统内部的对象划分为不同的项目组或用户组。
常见的 pods、services、replication controllers 和 deployments 等属于某个 namespace(默认是 default)。
15.1.6 Service
Service 是应用服务的抽象,通过 labels 为应用提供负载均衡和服务发现。
带名字的服务会映射到由标签选择器定义的一组动态 Pod 集。
集群中的任何容器都可以使用服务名访问服务。
每个 Service 会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和 DNS 名。
15.1.7 Label
Label 是用户附加到 Pod 的任意键值对。
用于识别 Kubernetes 对象,以 key/value 的方式附加到对象上。
Label 不提供唯一性,多个对象(如 Pods)可以使用相同的 label。
🛠️ 15.2 Kubernetes架构设计简介
Kubernetes整体架构由 控制面(Master)和 数据面(Worker Node)组成。
🚀 15.3 Kubernetes使用示例
15.3.1 启用Kubernetes
Docker Desktop 集成了 Kubernetes 功能,适合快速完成 Kubernetes 学习环境的搭建。
可通过官网下载最新版本进行安装或更新。
15.3.2 使用Kubernetes
集群启用后,Docker桌面应用的选项卡会有微小变化,表明Kubernetes集群已成功启动。
15.3.3 创建MySQL
在项目目录 k8s 下创建 mysql.yaml 文件。
15.3.4 使用命名空间部署MySQL
使用命名空间来管理和组织 MySQL 部署。