20250707-4-Kubernetes 集群部署、配置和验证-K8s基本资源概念初_笔记

发布于:2025-07-08 ⋅ 阅读:(33) ⋅ 点赞:(0)
一、kubeconfig配置文件



  • 文件作用: kubectl使用kubeconfig认证文件连接K8s集群
  • 生成方式: 使用kubectl config指令生成
  • 核心字段:
    • clusters: 定义集群信息,包括证书和服务端地址
    • contexts: 定义上下文,关联集群和用户
    • users: 定义客户端认证信息
    • current-context: 指定当前使用的上下文
二、Kubernetes弃用Docker
1. 弃用背景
  • 原因: Kubernetes早期通过dockershim组件与Docker Engine通信,现计划弃用该组件
  • 解决方案: 引入CRI(Container Runtime Interface)标准接口
  • 架构变化: 从Kubernetes→kubelet→CRI(dockershim)→dockerd→containerd变为更直接的运行时调用链
2. 替代方案
  • containerd:
    • 与Docker兼容但更轻量
    • 目前较为成熟的替代方案
  • 红帽项目:
    • cri-o: 专为Kubernetes设计的轻量运行时
    • podman: 红帽主推的无守护进程容器工具
  • 应对建议: 在Kubernetes彻底放弃Docker支持前迁移到受支持的运行时
三、kubectl命令工具
  • 基础命令:
    • 资源操作: create/expose/run/set/explain/get/edit/delete
    • 功能说明: 通过文件名或标准输入创建/管理资源
  • 部署命令:
    • 版本控制: rollout管理Deployment发布状态
    • 伸缩能力: scale调整Pod数量,autoscale配置自动伸缩规则
  • 集群管理:
    • 节点维护: cordon/uncordon标记节点调度状态,drain优雅下线节点
    • 信息查看: cluster-info显示集群信息,top查看资源利用率
  • 学习方式:
    • 帮助系统: 通过help和man命令查看详细使用方法
    • 官方文档: 参考https://kubernetes.io/zh/docs/reference/kubectl/overview/
四、kubectl命令行管理工具

1. kubectl介绍



  • 工具性质: kubectl是Kubernetes集群管理工具,用于控制Kubernetes集群
  • 手册获取:
    • 由于是第三方工具,不包含在Linux系统手册中(man命令不可用)
    • 需要通过--help命令和官方文档获取使用说明
  • 命令状态码:
    • 0表示成功执行
    • 1表示小问题(如无法访问子目录)
    • 2表示严重错误(如无法访问命令行参数)
2. kubectl官方文档



  • 文档地址: https://kubernetes.io/zh/docs/reference/kubectl/overview/
  • 语言切换: 右上角可选择中文界面
  • 内容特点:
    • 提供完整的kubectl命令参考
    • 包含大量实际使用示例
    • 可作为日常操作的权威参考
  • 基本语法:
    • kubectl [command] [TYPE] [NAME] [flags]
    • command: 要执行的操作(如create/get/delete)
    • TYPE: 资源类型(不区分大小写,支持单数/复数/缩写形式)
    • NAME: 资源名称(区分大小写,省略时显示所有资源)
  • 典型操作:
    • 获取pod状态: kubectl get pods <pod-name>
    • 资源排序输出: 使用--sort-by参数配合jsonpath表达式
    • 按名称排序pod列表: kubectl get pods --sort-by=.metadata.name
  • 使用建议:
    • 文档内容非常全面,可作为参考手册使用
    • 实际使用时只需关注当前需要的功能部分
    • 遇到问题时再查阅相关命令的详细说明
3. 命令分类及描述



  • 基础命令(Beginner):
    • create: 从文件或标准输入创建资源
    • expose: 将副本控制器、服务、部署或pod暴露为新的Kubernetes服务
    • run: 在集群上运行特定镜像
    • set: 设置对象的特定功能
  • 基础命令(Intermediate):
    • explain: 资源文档说明
    • get: 显示一个或多个资源
    • edit: 在服务器上编辑资源
    • delete: 通过文件名、标准输入、资源名称或标签选择器删除资源
  • 部署命令:
    • rollout: 管理资源的部署过程
    • scale: 设置Deployment、ReplicaSet或ReplicationController的新大小
    • autoscale: 自动缩放Deployment、ReplicaSet、StatefulSet或ReplicationController
  • 集群管理命令:
    • certificate: 修改证书资源
    • cluster-info: 显示集群信息
    • top: 显示资源使用情况
  • 设置命令:
    • label: 更新资源标签
    • annotate: 更新资源注释
    • completion: 输出指定shell的补全代码(bash或zsh)
  • 其他命令:
    • api-resources: 打印服务器支持的API资源
    • api-versions: 以"group/version"形式打印支持的API版本
    • config: 修改kubeconfig文件
    • plugin: 提供与插件交互的实用程序
    • version: 打印客户端和服务器版本信息
  • 使用说明:
    • 基本语法: kubectl [flags] [options]
    • 帮助信息: 使用kubectl <command> --help获取特定命令的更多信息
  • 学习重点:
    • 需要掌握约80%命令的基本用途和使用方法
    • 官方文档参考地址: Kubernetes kubectl概述
4. 命令分类及描述总结

1)基础命令

  • create: 通过文件名或标准输入创建资源
  • expose: 为Deployment或Pod创建Service
  • run: 在集群中运行特定镜像
  • set: 在对象上设置特定功能
  • explain: 查看文档参考资料
  • get: 显示一个或多个资源
  • edit: 使用系统编辑器编辑资源
  • delete: 通过多种方式删除资源
2)部署命令
  • rollout: 管理Deployment/Daemonset的发布(状态、记录、回滚等)
  • scale: 对Deployment/ReplicaSet/RC/Job进行Pod数量扩缩容
  • autoscale: 配置自动伸缩规则(依赖metrics-server和hpa)
  • certificate: 修改证书资源
3)集群管理命令
  • cluster-info: 显示集群信息
  • top: 查看资源利用率(依赖metrics-server)
  • cordon/uncordon: 标记节点不可调度/可调度
  • drain: 驱逐节点应用准备维护
  • taint: 修改节点taint标记
4)故障诊断和调试命令
  • describe: 显示资源详细信息
  • logs: 查看Pod容器日志(-c指定多容器)
  • attach/exec: 附加到容器/在容器内执行命令
  • port-forward: 创建Pod本地端口映射
  • proxy: 为API server创建代理
  • cp: 容器内外文件拷贝
  • auth: 检查授权
  • debug: 创建调试会话排查故障
5)高级命令
  • diff: 在线配置与文件对比
  • apply: 创建/更新资源
  • patch: 补丁方式更新资源字段
  • replace: 替换资源
  • kustomize: 构建kustomization目标
6)设置命令
  • label: 设置/更新资源标签
  • annotate: 设置/更新注解
  • completion: 配置自动补全(依赖bash-completion)
7)其他命令
  • api-resources: 查看所有资源
  • api-versions: 打印支持的API版本
  • config: 修改kubeconfig文件
  • version: 查看kubectl和k8s版本
8)学习建议
  • 学习方法: 80%命令将在后续场景中具体讲解,建议先混个眼熟
  • 实践重点: 结合具体场景理解命令使用,比单独记忆更有效
  • 官方参考: kubectl官方文档
5. 补全命令

1)补全命令介绍



  • 功能定位:completion命令用于实现kubectl命令行工具的自动补全功能,特别适合初学者快速掌握命令结构
  • 依赖关系:需要系统安装bash-completion软件包(Linux默认不包含该包)
  • 命令语法:通过source <(kubectl completion bash)命令激活补全功能
2)补全命令使用



  • 安装步骤:
      1. 执行yum install bash-completion安装依赖包(示例中版本为1:2.1-8.el7)
      2. 安装完成后必须重新打开终端会话
      3. 执行激活命令source <(kubectl completion bash)
  • 使用效果:
    • 输入kubectl get n后按Tab键,会自动提示所有n开头的资源类型
    • 继续输入o会缩小到node相关命令
  • 系统要求:
    • 必须保持bash-completion包版本与系统兼容
    • 不同Linux发行版安装命令可能不同(如apt-get等)
3)查看当前kubectl和k8s版本



  • 命令语法:kubectl version显示客户端和服务端双版本
  • 版本解读:
    • 示例中客户端版本为v1.21.0(GitVersion字段)
    • 服务端版本需与客户端匹配,否则可能出现兼容性问题
  • 版本差异:
    • 1.15之前版本功能差异较大
    • 版本号采用主次版本号制(如1.21比1.8新13个版本)
  • 实践意义:
    • 排查问题时需先确认集群版本
    • 学习资料需对应版本,避免新功能在老版本不可用
6. 应用案例

1)快速部署网站

  • 部署流程:
    • 使用kubectl create deployment web --image=lisi/java-demo创建部署
    • 通过kubectl get deploy,pods查看部署状态
    • 使用kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort暴露服务
    • 通过kubectl get service获取访问地址
  • 关键参数说明:
    • --port:Service对外暴露的端口
    • --target-port:容器内部应用实际监听的端口
    • --type=NodePort:将服务暴露为节点端口类型
  • 访问方式:
    • 通过任意节点IP和随机分配的端口访问,如http://NodeIP:Port
    • 端口号可通过kubectl get service查看
  • 基础命令:
    • create:通过文件名或标准输入创建资源
    • expose:为Deployment/Pod创建Service
    • get:显示一个或多个资源状态
    • delete:删除资源
  • 部署命令:
    • rollout:管理Deployment发布状态
    • scale:扩容/缩容Pod数量
    • autoscale:配置自动伸缩规则
  • 集群管理命令:
    • cluster-info:显示集群信息
    • drain:驱逐节点应用准备维护
  • create命令详解:
    • 输入方式:支持通过YAML文件或标准输入创建资源
    • 常用子命令:可创建deployment、configmap、service等多种资源
    • 参数选项:
      • -f:指定YAML文件
      • --dry-run:试运行不实际创建
      • --record:记录命令到资源注解
2)快速部署网站实践



  • 实际操作步骤:
    • 创建deployment:kubectl create deployment java-demo --image=lisi/java-demo
    • 检查pod状态:kubectl get pods确认容器运行状态
    • 暴露服务:kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort
    • 获取访问地址:kubectl get service查看分配的节点端口
  • 注意事项:
    • 确保镜像可从公共仓库拉取
    • 端口映射关系要正确配置
    • 服务名称需与deployment对应
  • 访问验证:
    • 通过浏览器访问http://<节点IP>:<随机端口>
    • 示例中使用的JAVA demo应用会显示简单界面
五、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

kubectl 基础命令

kubectl create 创建资源(如 Deployment、Service),kubectl get 查看资源状态

kubectl create 支持文件名(YAML)或标准输入(管道符)

⭐⭐

Deployment 部署

通过 kubectl create deployment <名称> --image=<镜像> 快速部署应用

镜像需可公开拉取(如 Docker Hub),名称需唯一

⭐⭐

Service 暴露服务

使用 kubectl expose 将 Deployment 端口暴露为 Service,类型可选 NodePort

端口映射逻辑:--port(Service 端口)与 --target-port(容器端口)需区分

⭐⭐⭐

命令补全

安装 bash-completion 包后,通过 kubectl completion bash 启用命令提示

仅限 Linux 系统,需重启终端生效

版本兼容性

kubectl version 查看客户端与服务端版本,1.15 以下版本功能差异较大

版本号格式为 1.x.y,需注意迭代间隔(如 1.8 → 1.21)

⭐⭐

实战示例

部署 Java Demo 镜像并暴露为 NodePort Service,通过节点 IP:端口访问

Service 名称需与 Deployment 对应,否则暴露失败

⭐⭐⭐

帮助文档

kubectl --help 查看命令概览,kubectl <command> --help 查看子命令详情

官方文档优先(含中文选项),第三方工具无 man 手册


网站公告

今日签到

点亮在社区的每一天
去签到