概述
Kubernetes(简称 K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一种便捷的方式来部署和运行应用程序,而无需关心底层基础设施的细节。本指南将带你从零开始学习 Kubernetes 的基础知识,并帮助你部署第一个应用。
Kubernetes 基础知识
容器与容器编排
- 容器:轻量级、可移植的执行环境,包含运行应用程序所需的所有依赖项。
- 容器编排:自动化的管理容器生命周期的过程,包括部署、扩展、负载均衡等。
Kubernetes 架构
- Master Node (控制平面): 包含 API Server, Scheduler, Controller Manager 等组件,负责集群状态的管理。
- Worker Node: 运行 Pod 和容器的实际节点。
Kubernetes 关键概念
- Pod: Kubernetes 中最小的可部署单元,一个或多个容器的集合。
- Service: 提供稳定 IP 地址和 DNS 名称的服务,使得 Pod 之间的通信更加简单。
- Deployment: 用来定义应用的期望状态,Kubernetes 会确保集群中的应用状态与 Deployment 定义的状态一致。
- Volume: 存储数据的持久化方式,独立于容器生命周期之外。
安装 Kubernetes
本节将指导你如何在本地计算机上安装一个单节点的 Kubernetes 集群,使用 Minikube 工具。Minikube 是一个工具,可以在你的笔记本电脑上运行一个单节点的 Kubernetes 集群。
安装 Minikube
下载并安装 Minikube:
- Minikube 官方文档 提供了详细的安装步骤。
- 对于 macOS 用户,可以通过 Homebrew 安装:
brew install minikube
启动 Minikube 集群:
minikube start
验证安装:
kubectl version
部署第一个应用
现在我们已经有了一个运行中的 Kubernetes 集群,接下来我们将部署一个简单的 Nginx Web 服务器。
创建 Nginx Deployment
编写 Deployment 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.7.9 ports: - containerPort: 80
应用 Deployment:
kubectl apply -f nginx-deployment.yaml
检查 Deployment 状态:
kubectl get deployments
创建 Service
为了让外部能够访问到我们的 Nginx 应用,我们需要创建一个 Service。
编写 Service YAML 文件:
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
应用 Service:
kubectl apply -f nginx-service.yaml
获取 Service 信息:
kubectl get services
访问应用:
如果你正在使用 Minikube,你可以通过以下命令获取 Service 的 URL 并访问它:minikube service nginx-service --url
总结
通过这篇指南,你应该对 Kubernetes 有了基本的认识,并且已经成功部署了一个简单的 Nginx 应用。这只是 Kubernetes 功能的冰山一角,随着你对它的深入了解,你会发现更多强大的特性和功能。