Kubernetes学习指北

Kubernetes学习指北 一、 大纲 1. 了解基础概念 概念 说明 Pod 最小的调度单位,一个 Pod 可以包含一个或多个容器 Node Kubernetes 集群的工作节点 Deployment 管理 Pod 的副本和升级策略 Service 用于 Pod 间通信和对外暴露 ConfigMap / Secret 配置和敏感信息管理 Volume 数据卷,用于持久化数据 Namespace 命名空间,多租户环境的逻辑隔离 Ingress 对外 HTTP/HTTPS 流量管理 kube-apiserver、kube-scheduler、kube-controller-manager Master 组件,负责调度、管理集群 2. 核心组件及职责 (必须的核心组件) kube-apiserver (API 服务器) 作用: 集群的 大脑入口 负责 接收请求(kubectl、Dashboard、其他服务),然后转给 etcd 或控制器 所有组件(scheduler、controller、kubelet)都通过它通信。 像是办事大厅,所有人(开发、运维、调度器)都必须来这里递交申请。 kube-scheduler (调度器) * 作用: 负责 给 Pod 找宿主机。 根据 资源情况(CPU、内存)、约束(亲和性、污点)、策略 来决定 Pod 放在哪个 Node 上。 * 像是一个 派单员,根据司机(Node)的空闲情况,把订单(Pod)分配给合适的人。 kube-controller-manager (控制器管理器) * 作用: 内部包含很多 控制器(controller),比如: Deployment Controller:保证副本数量正确 Node Controller:监控节点状态。 Endpoint Controller:维护 Service → Pod 的映射。 核心任务是:对比实际状态和期望状态,不断修正。 * 像是一个 巡检员,不停检查「理想状态」和「现实情况」是不是一致,如果发现差错,就赶紧修正。 kubelet (节点代理) 作用: 跑在每个 Node 上的 代理。 负责和 kube-apiserver 交互,接收“要运行哪些 Pod”。 调用底层 容器运行时(containerd、CRI-O、Docker) 来真正启动容器。 还会 汇报 Pod 和 Node 的运行状态。 * 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod)。 etcd 作用: 分布式键值存储,保存集群的所有状态(Pod、Service、配置等) * 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod) 容器运行时(Container Runtime,如 containerd、CRI-O、DockerShim) 作用: kubelet 本身不会直接运行容器,它要依赖运行时。 真正负责创建和运行容器的底层引擎。 常见的有 containerd(最主流,K8s 默认推荐) CRI-O(轻量化,专门为 K8s 服务) Docker(以前常用,但现在 K8s 不直接依赖它了,而是通过 containerd) * 比喻:工人,真正搬砖盖房子(运行容器)。 3....

May 1, 2025 · 2 min · Leanku

Kubernetes学习指北之Kubernetes kubectl

Kubernetes学习指北之Kubernetes kubectl 一、 kubectl 介绍 kubectl 是 Kubernetes 官方提供的命令行工具,用于与 Kubernetes 集群交互。 它可以管理资源对象(Pods、Deployments、Services 等)、调试问题、查看日志、扩缩容、发布更新等。 本质上,它通过 Kubernetes API 与集群通信。 组件关系示意: kubectl <---> kube-apiserver <---> etcd / kubelet / controller-manager / scheduler 二、安装与配置 1. 安装(Linux): curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/ kubectl version --client 2. 配置 kubeconfig 默认路径:~/.kube/config 查看当前配置: kubectl config view kubectl config current-context 切换 namespace: kubectl config set-context --current --namespace=demo 三、基础命令 1. 查看集群信息 kubectl cluster-info # 控制面信息 kubectl version # 客户端 & 服务端版本 kubectl api-resources # 列出可用资源 kubectl get namespaces # 查看命名空间 2....

May 1, 2025 · 3 min · Leanku

Kubernetes学习指北之Kubernetes YAML

Kubernetes学习指北之Kubernetes YAML 一、 Kubernetes YAML 的基本结构 Kubernetes 资源对象通常是 YAML 文件。每个 YAML 对象至少包含三个字段: apiVersion: v1 # API 版本,不同资源使用的版本不同 kind: Pod # 资源类型,如 Pod、Deployment、Service、Secret、ConfigMap metadata: # 元数据 name: my-pod namespace: default spec: # 具体配置 containers: - name: nginx image: nginx:1.25 二、常用字段详解 1. apiVersion 指定资源的 API 版本。 常见值: v1:Pod、Service、ConfigMap、Secret apps/v1:Deployment、StatefulSet、DaemonSet batch/v1:Job、CronJob 2. kind 资源类型 常见类型: Pod:最小的调度单位 Deployment:Pod 的管理控制器,可以做副本管理和滚动升级 Service:服务发现与负载均衡 ConfigMap / Secret:配置或敏感信息管理 Namespace:隔离资源的逻辑空间 3. metadata 资源的名字、标签、注解等。 常见字段: metadata: name: my-app namespace: default labels: app: my-app annotations: description: "Demo app" 4....

May 1, 2025 · 2 min · Leanku

Kubernetes学习指北之单节点集群(Master)

Kubernetes学习指北之单节点集群(Master) 一、 单节点集群(Single Node Cluster)说明 学习和开发利器,操作简单 特点 Master 节点和 Worker 节点在同一台机器上 kube-apiserver、kube-scheduler、kube-controller-manager、kubelet 都在同一台机器 Pod 也在同一台机器上运行 资源有限:所有容器共享同一台机器的 CPU、内存和存储 高可用性低:Master 节点宕机,整个集群不可用 网络简单:只需一个节点,Pod 网络配置相对简单 适用场景 学习和测试 Kubernetes 核心概念 开发环境部署微服务 练习 kubectl 命令、Deployment、Service 等 优点 配置简单,一条命令就能搭建 资源占用低,不需要多台虚拟机 部署快速,便于练手 缺点 不适合生产环境 没有高可用性 无法模拟真实多节点调度 二、 准备环境和工具 这里我使用的CentOS7 做一些初始化 # 切换 root sudo -i # 关闭防火墙(实验环境) systemctl stop firewalld systemctl disable firewalld # 关闭 selinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config # 关闭 swap swapoff -a sed -i '/swap/d' /etc/fstab # 调整内核参数(K8s 网络需要) cat <<EOF > /etc/sysctl....

May 1, 2025 · 9 min · Leanku

Kubernetes学习指北之多节点集群(Multi Node Cluster)

Kubernetes学习指北之多节点集群(Multi Node Cluster) 一、 多节点集群(Multi Node Cluster)说明 真实生产环境的缩影,可以模拟调度、高可用、跨节点通信 特点 Master 节点负责管理集群 多个 Worker 节点运行实际应用 Pod Master 负责调度、管理和监控 高可用性可扩展 可以增加 Worker 节点提升容量 Master 可做 HA(高可用)部署 真实调度场景 Kubernetes 会根据资源和策略,将 Pod 调度到不同节点 网络复杂 Pod 网络跨节点,需要 CNI 插件(Flannel、Calico 等)支持 适用场景 生产环境部署微服务 测试调度策略、Pod 分布、Service 负载均衡 实战演练集群管理和高可用 优点 模拟真实生产环境 可以横向扩展容器数量 Master 故障可配置高可用 缺点 配置复杂,需要多台虚拟机或服务器 网络和存储管理比单节点复杂 资源占用高 二、 准备环境和工具 这里使用centos7环境 说明 sudo -i 建议用root账号操作 每台节点都需要执行的操作,包括 master 和 worker:系统初始化、安装和配置容器运行时(containerd)、镜像源替换等操作 这里不再赘述,参照另一篇:Kubernetes学习指北之单节点集群 三、节点准备 在每台节点上安装: # 安装 kubeadm、kubelet、kubectl yum install -y kubelet kubeadm kubectl # 启动 kubelet systemctl enable --now kubelet # 关闭 swap(K8s 要求) swapoff -a sed -i '/swap/d' /etc/fstab # 配置 sysctl cat <<EOF | sudo tee /etc/sysctl....

May 1, 2025 · 3 min · Leanku