Coursera 笔记

Module 02 · Kubernetes Basics

Using Kubectl使用 Kubectl 详解

Coursera ↗


学习目标

观看完本视频后,你将能够:

  • ✅ 定义 Kubectl 及其命令结构
  • ✅ 列出三种命令类型及其特点和优势
  • ✅ 列出常用的 Kubectl 命令并结合实例说明

一、什么是 Kubectl?

Kubectl 是 Kubernetes 命令行接口(CLI),用于与 Kubernetes 集群进行交互。

  • Kubectl 帮助用户:
    • 部署应用程序
    • 检查和管理集群资源
    • 查看日志等

它是 Kubernetes 中的一个核心工具,用于管理和操作运行中的集群负载。


二、Kubectl 命令结构

Kubectl 命令遵循以下结构:

kubectl <command> <type> <name> <flags>
部分 说明
command 要执行的操作,如 create、get、apply、delete 等
type 资源类型,例如 pod、deployment、replicaset
name 资源名称(如果适用)
flags 特殊选项或修改器,覆盖默认值

三、命令类型

1命令型命令(Imperative Commands)

  • 功能:直接创建、更新和删除现有对象。
  • 优点:简单易学,适合开发和测试环境。
  • 缺点:
    • 没有审计跟踪,难以跟踪变更。
    • 不能与更改审查过程集成。
    • 仅适用于小范围的临时任务。

示例:

kubectl run nginx --image=nginx:latest

此命令会直接创建一个名为 nginx 的 Pod。

2命令型对象配置(Imperative Object Configuration)

  • 功能:通过文件定义对象,执行操作。
  • 优点:可以使用 YAML 或 JSON 文件,适用于多环境配置。
  • 缺点:必须确保所有操作已合并到配置文件中,无法自动同步更新。

示例:

kubectl create -f nginx.yaml

此命令会基于 nginx.yaml 文件中定义的配置创建资源。

3声明型对象配置(Declarative Object Configuration)

  • 功能:用户无需指定操作,Kubernetes 自动决定并执行必要的操作。
  • 优点:自动化程度高,适用于生产环境,提供一致性。
  • 缺点:用户无法手动控制每个操作。

示例:

kubectl apply -f deployment.yaml

Kubernetes 会自动根据 deployment.yaml 文件中的定义更新或创建资源。


四、常用 Kubectl 命令

 获取资源(Get Commands)

  • 功能:列出或查看资源。
  • 示例:
    • 列出当前命名空间的服务:
      kubectl get svc
      
    • 查看所有命名空间中的 Pods:
      kubectl get pods --all-namespaces
      

 应用配置(Apply Commands)

  • 功能:通过 YAML 或 JSON 文件创建或更新资源。
  • 示例:
    • 创建部署:
      kubectl apply -f nginx-deployment.yaml
      
    • 从 URL 创建资源:
      kubectl apply -f https://example.com/deployment.yaml
      

 扩展副本数(Scale Commands)

  • 功能:缩放副本集或部署的副本数。
  • 示例:
    • 扩展 foo 副本集至 3 个副本:
      kubectl scale replicaset foo --replicas=3
      
    • 扩展 nginx 部署至 3 个副本:
      kubectl scale deployment nginx --replicas=3
      
      

 删除资源(Delete Commands)

  • 功能:删除资源。
  • 示例:
    • 删除 Pod:
      kubectl delete pod nginx
      
    • 删除一个命名空间中的所有 Pods:
      kubectl delete pods --all -n mynamespace
      

 自动缩放(Autoscale Command)

  • 功能:为指定的资源应用自动扩缩容。
  • 示例:
    • 为 nginx 部署设置自动扩容:
      kubectl autoscale deployment nginx --min=2 --max=10 --cpu-percent=80
      

五、总结

命令类型 描述 优缺点
命令型命令 直接创建、更新、删除对象 简单易学,适合开发测试,但缺乏灵活性和审计
命令型对象配置 通过文件创建或更新对象 支持多环境,提供模板,但不支持自动同步更新
声明型对象配置 自动化配置管理,Kubernetes 处理操作 适用于生产环境,自动化高,但用户无法控制每个操作

六、课程回顾

  • Kubectl 是与 Kubernetes 集群交互的命令行工具。
  • 命令结构 为:kubectl <command> <type> <name> <flags>。
  • 命令类型:
    • 命令型命令:简单直接,适合临时任务。
    • 命令型对象配置:使用模板,适合多环境部署。
    • 声明型对象配置:自动管理对象状态,适合生产环境。
  • 常用命令包括 get、apply、scale、delete 等,用于资源管理和自动扩缩容。

✨ 总结: 使用 Kubectl 可以高效地管理 Kubernetes 集群,选择合适的命令类型可以根据需求优化工作流程。