Kubernetes的起源

Kubernetes(常简称为K8s)起源于Google内部的Borg系统,是Google多年大规模容器管理技术的开源版本。Google每周运行数十亿个容器,Kubernetes就是基于这种经验构建的。

Kubernetes发展时间线

2014年,Google正式开源Kubernetes项目。2015年,Google与Linux基金会合作成立了Cloud Native Computing Foundation(CNCF),并将Kubernetes作为首个托管项目。自此,Kubernetes逐渐成为容器编排领域的事实标准。

Kubernetes核心概念

要理解Kubernetes,首先需要了解其核心抽象概念:

Pod

Kubernetes中最小的部署单元,包含一个或多个容器,共享存储和网络资源。

Service

定义一组Pod的访问策略,提供稳定的网络端点供其他服务访问。

Deployment

描述Pod的期望状态,支持滚动更新和回滚,确保应用的高可用性。

Volume

提供持久化存储解决方案,使容器数据在重启后仍然保留。

Secret

用于存储敏感信息,如密码、OAuth令牌和SSH密钥。

ConfigMap

用于存储非敏感的配置数据,可以在Pod中使用或作为环境变量。

Kubernetes集群架构

一个Kubernetes集群由控制平面(Control Plane)和工作节点(Worker Nodes)组成:

Kubernetes集群架构示意图

控制平面组件

  • API Server:集群的前端接口,处理所有REST请求
  • etcd:高可用的键值存储,保存集群的所有数据
  • Scheduler:将Pod调度到合适的节点上
  • Controller Manager:运行控制器进程,处理集群级别的功能
  • Cloud Controller Manager:与云服务商API交互

工作节点组件

  • Kubelet:与API Server通信,管理节点上的Pod
  • Kube Proxy:维护节点上的网络规则
  • Container Runtime:负责运行容器(如Docker、containerd)

Kubernetes安装方法

有多种方法可以安装Kubernetes,从本地开发环境到生产级集群:

1. 使用Minikube(本地开发)

Minikube是在本地计算机上运行单节点Kubernetes集群的理想工具。

# 安装Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 启动集群
minikube start

# 验证安装
kubectl get nodes

2. 使用kubeadm(生产环境)

kubeadm是官方推荐的用于创建生产级集群的工具。

  1. 在所有节点上安装Docker和kubeadm
  2. 初始化控制平面节点:kubeadm init
  3. 安装网络插件(如Calico、Flannel)
  4. 将工作节点加入集群:kubeadm join
  5. 验证集群状态:kubectl get nodes

3. 托管Kubernetes服务

云服务商提供的托管Kubernetes服务可以简化集群管理:

  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Azure Kubernetes Service (AKS)
  • DigitalOcean Kubernetes

验证集群安装

安装完成后,使用以下命令验证集群状态:

# 查看集群节点状态
kubectl get nodes

# 查看所有组件的健康状态
kubectl get componentstatuses

# 查看集群信息
kubectl cluster-info

# 运行测试应用
kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment hello-world --type=NodePort --port=8080
kubectl get services

学习资源

要进一步学习Kubernetes,可以参考以下资源:

  • 官方文档: https://kubernetes.io/docs/
  • Kubernetes学习路径: https://kubernetes.io/docs/tutorials/
  • 互动式教程: https://www.katacoda.com/courses/kubernetes
  • CNCF课程: https://www.cncf.io/certification/cka/
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐