当前位置: 首页 > news >正文

容器与 Kubernetes 基本概念与架构

文章目录

    • 1. 典型环境层次结构
    • 2. Kubernetes 生态三大类
      • 2.1 核心组件
      • 2.2 集群管理工具
      • 2.3 生态辅助工具
      • 2.4 资源管理关系
    • 3. Docker 容器技术与实践
      • 3.1 镜像拉取加速
      • 3.2 认证与登录
      • 3.3 常用命令
      • 3.4 存储挂载方式对比
      • 3.5 docker-compose 启动
      • 3.6 容器化应用部署示例
    • 4. kind 快速启动
    • 5. 参考资料

1. 典型环境层次结构

  1. 物理机/宿主机:运行虚拟化或容器化环境的基础硬件。
  2. 虚拟机(可选):部分场景下,容器运行在虚拟机之上,增强隔离性和资源管理。
  3. Docker(或其他容器引擎):负责容器的创建、运行和管理。
  4. Kubernetes:在容器引擎之上,负责容器集群的编排与调度。

2. Kubernetes 生态三大类

Kubernetes 生态可分为三大类:

  • 核心组件:实现集群基本功能,构成 Kubernetes 的分布式系统本体。
  • 集群管理工具:用于集群的安装、模拟、管理和测试。
  • 生态辅助工具:提升开发、部署、运维效率,简化复杂操作。

2.1 核心组件

组件作用简介
kube-apiserver集群 API 服务入口,所有操作都通过它进行。
etcd分布式键值存储,保存集群所有数据。
kube-scheduler负责 Pod 的调度。
kube-controller-manager负责各种控制器(如副本、节点、命名空间等)。
kubelet每个节点上的代理,负责 Pod 的生命周期管理。
kube-proxy负责服务的网络代理和负载均衡。
container runtime容器运行时(如 Docker、containerd),负责容器的创建和管理。

注意:Kubernetes(K8s)不是一个单一可执行程序,而是由多个核心组件(如 kube-apiserver、kubelet、etcd 等)和生态工具协同组成的分布式系统,kubectl 只是常用的客户端入口。

2.2 集群管理工具

工具作用与简要描述
kubeadm官方主流的生产级集群安装和生命周期管理工具,适合自建高可用生产集群。
Kind基于 Docker 容器的本地多节点 Kubernetes 集群工具,便于本地模拟和测试。
Minikube在本地 VM 或容器中运行单节点 Kubernetes,适合个人开发和测试。

2.3 生态辅助工具

工具作用与简要描述
Docker主流的容器运行时,负责容器的打包、分发、运行和隔离。
kubectlKubernetes 官方命令行工具,管理和操作集群资源。
HelmKubernetes 的包管理器,将应用及其所有相关资源打包为 Chart,简化安装、升级和回滚。
Skaffold持续开发工具,自动化构建、部署并同步本地代码到集群,支持多种构建和部署后端。
  • Docker:一切容器化的基础,Kind/Minikube等本地K8s方案都依赖于 Docker 或兼容容器引擎。
  • Kind/Minikube:本地快速搭建 Kubernetes 集群,适合开发、测试和学习。
  • kubectl:与 Kubernetes 集群直接交互的 CLI,所有集群操作的标准入口。
  • Helm:K8s 应用的包管理与部署标准,提升运维效率。
  • Skaffold:本地开发到集群的自动化桥梁,适合持续集成与敏捷开发。

以上工具均为主流开源方案,广泛应用于开发、测试和生产环境。
Chart 就是 Helm 的"打包格式",负责描述、版本化、分享和管理一组 Kubernetes 资源,是 Helm 能够简化应用部署与运维的核心所在。
参考:Kubernetes官方文档

2.4 资源管理关系

  • Node:物理机或虚拟机
  • Pod:容器的运行单元
  • ReplicaSet:管理 Pod 的副本数量
  • Deployment:管理 ReplicaSet,实现应用升级、回滚
  • Service:为 Pod 提供统一入口,负责流量分发

3. Docker 容器技术与实践

3.1 镜像拉取加速

  • 镜像加速配置参考:Docker Hub 国内镜像源配置
  • 配置文件(macOS):~/docker/daemon.json
  • 示例:
    {"registry-mirrors": ["https://mi0m0nd3.mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.ustc.edu.cn"]
    }
    
  • 如遇镜像拉取失败,可用 dig 命令测试 DNS 解析,例如:
    dig @114.114.114.114 registry-1.docker.io
    
  • 支持从私有仓库拉取镜像,例如:
    docker pull 10.132.17.6:28443/nginx
    

3.2 认证与登录

  • 推荐使用代理或科学上网
  • 阿里云镜像仓库登录示例:
    sudo docker login --username=xxx registry.cn-hangzhou.aliyuncs.com
    
  • docker login 会将认证凭据存储在配置文件(如 ~/.docker/config.json),拉取镜像时自动使用。
  • 认证和镜像加速配置均可在 config.json 查看。

安全提示:config.json 中的 auths 字段内容为 base64 编码的用户名和密码,注意保护,不要泄露。
参考:Docker CLI config reference

3.3 常用命令

  • 查看所有容器:docker ps -a
  • 启动容器:docker start <容器名>
  • 停止容器:docker stop <容器名>
  • 重启容器:docker restart <容器名>
  • 查看日志:docker logs <容器名>
  • 进入容器:docker exec -it <容器名> /bin/bash
  • 删除容器:docker rm <容器名>
  • 查看挂载:docker inspect <容器ID> | grep -A 5 "Mounts"
  • 批量删除某类容器:
    docker ps --filter "name=llm" --format '{{.ID}}' | xargs docker rm -f
    
  • 其他常用命令:
    • 查看卷:docker volume ls
    • 查看详细信息:docker inspect <容器名或ID>
    • 保存镜像为文件:docker save <镜像ID> -o <文件名>
    • 构建镜像:docker build -t <镜像名> .

3.4 存储挂载方式对比

特性命名卷(-v volume_name:/container/path)宿主机目录挂载(-v /host/path:/container/path)
可移植性更好,不依赖宿主机路径较差,依赖宿主机目录结构
备份管理由 Docker 集中管理需手动管理宿主机目录
访问便捷性不易直接访问内容可直接在宿主机上查看和修改
性能取决于 Docker 存储驱动直接访问宿主机文件系统
用途应用数据、数据库存储代码开发、配置文件、日志输出

3.5 docker-compose 启动

docker-compose --compatibility up -d

如使用代理,需确保 Docker Desktop 已开启代理。

3.6 容器化应用部署示例

PostgreSQL 15 容器部署:

docker run --name postgres15 \-p 5432:5432 \-e POSTGRES_PASSWORD=your_password \-v postgres_data:/var/lib/postgresql/data \-d postgres:15-alpine

4. kind 快速启动

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
chmod +x kind && sudo mv kind /usr/local/bin/
kind create cluster

验证 API Server 是否正常响应:

kubectl --context kind-kind get --raw /

5. 参考资料

  • Kubernetes官方文档
  • Docker Hub国内镜像源配置
  • minikube常见问题解答
  • Docker万字教程:从入门到掌握
  • Docker CLI config reference
http://www.lqws.cn/news/606187.html

相关文章:

  • pnpm 升级
  • 解决在Pom文件中写入依赖坐标后, 刷新Maven但是多次尝试都下载不下来
  • 使用开源项目youlai_boot 导入到ecplise 中出现很多错误
  • 【飞算JavaAI】智能开发助手赋能Java领域,飞算JavaAI全方位解析
  • Kuikly 与 Flutter 的全面对比分析,结合技术架构、性能、开发体验等核心维度
  • Flutter
  • Oracle 证书等级介绍
  • Rust 安装使用教程
  • 去中心化身份:2025年Web3身份验证系统开发实践
  • 【数据结构】排序算法:冒泡与快速
  • MacOS 安装brew 国内源【超简洁步骤】
  • transformers==4.42.0会有一个BUG
  • 从SEO到GEO:AI时代的品牌大模型种草与数字营销重构
  • Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list 更换国内镜像软件源 笔记250702
  • WPF学习笔记(20)Button与控件模板
  • 从模型部署到AI平台:云原生环境下的大模型平台化演进路径
  • 如快 Sofast:自定义快捷键 剪贴板智能管家快速查找搜索提升办公效率
  • 全面的 Spring Boot 整合 RabbitMQ 的 `application.yml` 配置示例
  • HarmonyOS学习记录2
  • Linux平台MinGW32/MinGW64交叉编译完全指南:原理、部署与组件详解
  • 计算机网络(五)数据链路层 MAC和ARP协议
  • RuoYi框架低代码特性
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • Java项目:基于SSM框架实现的软件工程项目管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • python: 字符串编码和解码
  • CAN转Modbus TCP网关赋能食品搅拌机智能协同控制
  • 支持向量机(SVM)在脑部MRI分类中的深入应用与实现
  • Django全栈开发:架构解析与性能优化实战
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究
  • 【算法】动态规划 矩阵:120. 三角形最小路径和