前置知识: 运维与中间件

GCP GKE Kubernetes 命令

3 min入门

GKE 命令实战:项目与凭证、集群创建与升级、节点池、自动伸缩与网络/安全配置。

学习目标

本文是「云计算」模块的第 51 篇,难度定位为入门。重点内容:GKE 命令实战:项目与凭证、集群创建与升级、节点池、自动伸缩与网络/安全配置。

主要章节:

  • 凭证与项目
  • 集群创建
  • 凭证与连接
  • 节点池管理
  • 集群升级
  • 自动伸缩与维护
  • ……共 12 个章节

凭证与项目

基本写法:登录 GCP gcloud auth login

# 通过浏览器交互登录 Google Cloud
gcloud auth login

基本写法:设置项目 gcloud config set project <项目ID>

# 切换到指定项目
gcloud config set project my-project-123

基本写法:查看当前配置 gcloud config list

# 查看当前账户、项目等配置
gcloud config list

基本写法:应用凭证 gcloud auth application-default login

# 为本地应用设置默认凭证
gcloud auth application-default login

基本写法:列出账户 gcloud auth list

# 查看所有已登录账户
gcloud auth list

集群创建

基本写法:创建 Autopilot 集群 gcloud container clusters create-auto <集群名> --region <区域>

# 创建 Autopilot 集群(Google 托管节点)
gcloud container clusters create-auto my-gke \
  --region us-central1

基本写法:创建标准集群 gcloud container clusters create <集群名> --region <区域> --num-nodes <节点数>

# 创建标准模式 GKE 集群
gcloud container clusters create my-gke \
  --region us-central1 \
  --num-nodes 3 \
  --machine-type e2-medium

基本写法:创建带可用区集群 gcloud container clusters create <集群名> --zone <可用区> --num-nodes <数量>

# 创建单可用区集群
gcloud container clusters create my-gke \
  --zone us-central1-a \
  --num-nodes 3

基本写法:启用 Workload Identity gcloud container clusters create <集群名> --region <区域> --workload-pool <项目ID>.svc.id.goog

# 启用 Workload Identity
gcloud container clusters create my-gke \
  --region us-central1 \
  --workload-pool my-project-123.svc.id.goog

基本写法:使用发布通道 gcloud container clusters create <集群名> --region <区域> --release-channel <通道>

# 使用 Regular 发布通道
gcloud container clusters create my-gke \
  --region us-central1 \
  --release-channel regular \
  --enable-ip-alias

凭证与连接

基本写法:获取集群凭证 gcloud container clusters get-credentials <集群名> --region <区域>

# 配置 kubectl 连接到 GKE 集群
gcloud container clusters get-credentials my-gke \
  --region us-central1

基本写法:跨项目获取凭证 gcloud container clusters get-credentials <集群名> --region <区域> --project <项目ID>

# 访问其他项目的集群
gcloud container clusters get-credentials my-gke \
  --region us-central1 \
  --project other-project-456

基本写法:使用内部 IP gcloud container clusters get-credentials <集群名> --region <区域> --internal-ip

# 通过内部 IP 连接私有集群
gcloud container clusters get-credentials my-gke \
  --region us-central1 \
  --internal-ip

基本写法:查看集群列表 gcloud container clusters list

# 列出当前项目所有集群
gcloud container clusters list

基本写法:查看集群详情 gcloud container clusters describe <集群名> --region <区域>

# 查看 my-gke 集群配置
gcloud container clusters describe my-gke \
  --region us-central1

节点池管理

基本写法:创建节点池 gcloud container node-pools create <池名> --cluster <集群> --region <区域> --num-nodes <数量>

# 为集群添加新节点池
gcloud container node-pools create user-pool \
  --cluster my-gke \
  --region us-central1 \
  --num-nodes 5 \
  --machine-type e2-standard-4

基本写法:列出节点池 gcloud container node-pools list --cluster <集群> --region <区域>

# 查看集群所有节点池
gcloud container node-pools list \
  --cluster my-gke \
  --region us-central1

基本写法:缩放节点池 gcloud container clusters resize <集群> --region <区域> --node-pool <池名> --num-nodes <数量>

# 缩放节点池到 10 个节点
gcloud container clusters resize my-gke \
  --region us-central1 \
  --node-pool user-pool \
  --num-nodes 10

基本写法:删除节点池 gcloud container node-pools delete <池名> --cluster <集群> --region <区域>

# 删除指定节点池
gcloud container node-pools delete user-pool \
  --cluster my-gke \
  --region us-central1

基本写法:GPU 节点池 gcloud container node-pools create <池名> --accelerator type=<GPU 类型>,count=<数量>

# 创建带 T4 GPU 的节点池
gcloud container node-pools create gpu-pool \
  --cluster my-gke \
  --region us-central1 \
  --num-nodes 2 \
  --machine-type n1-standard-4 \
  --accelerator type=nvidia-tesla-t4,count=1

集群升级

基本写法:查看可用升级版本 gcloud container get-server-config --region <区域>

# 查看区域支持的所有版本
gcloud container get-server-config \
  --region us-central1

基本写法:升级集群控制面 gcloud container clusters upgrade <集群> --region <区域> --master --cluster-version <版本>

# 升级控制面到 1.30
gcloud container clusters upgrade my-gke \
  --region us-central1 \
  --master \
  --cluster-version 1.30.1-gke.1000

基本写法:升级节点池 gcloud container clusters upgrade <集群> --region <区域> --node-pool <池名> --cluster-version <版本>

# 升级指定节点池
gcloud container clusters upgrade my-gke \
  --region us-central1 \
  --node-pool default-pool \
  --cluster-version 1.30.1-gke.1000

基本写法:仅升级一部分节点 gcloud container clusters upgrade <集群> --region <区域> --node-pool <池名> --batch-soak-duration <时间>

# 分批升级节点池并设置间隔
gcloud container clusters upgrade my-gke \
  --region us-central1 \
  --node-pool default-pool \
  --batch-size 3 \
  --batch-soak-duration 120s

基本写法:取消升级 gcloud container clusters upgrade <集群> --region <区域> --node-pool <池名> --cancel

# 取消正在进行的节点池升级
gcloud container clusters upgrade my-gke \
  --region us-central1 \
  --node-pool default-pool \
  --cancel

自动伸缩与维护

基本写法:启用节点自动伸缩 gcloud container clusters update <集群> --region <区域> --enable-autoscaling --min-nodes <最小> --max-nodes <最大>

# 启用集群自动伸缩 1-10
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-autoscaling \
  --min-nodes 1 \
  --max-nodes 10 \
  --node-pool default-pool

基本写法:禁用自动伸缩 gcloud container clusters update <集群> --region <区域> --no-enable-autoscaling

# 关闭节点自动伸缩
gcloud container clusters update my-gke \
  --region us-central1 \
  --no-enable-autoscaling \
  --node-pool default-pool

基本写法:配置维护窗口 gcloud container clusters update <集群> --region <区域> --maintenance-window-start <时间>

# 设置每日凌晨维护窗口
gcloud container clusters update my-gke \
  --region us-central1 \
  --maintenance-window-start 03:00 \
  --maintenance-window-end 07:00 \
  --maintenance-window-recurrence FREQ=DAILY

基本写法:维护排除项 gcloud container clusters update <集群> --region <区域> --add-maintenance-exclusion-name <名称> --add-maintenance-exclusion-start <开始> --add-maintenance-exclusion-end <结束>

# 添加维护排除窗口(该期间不进行维护)
gcloud container clusters update my-gke \
  --region us-central1 \
  --add-maintenance-exclusion-name holiday \
  --add-maintenance-exclusion-start 2026-12-24T00:00:00Z \
  --add-maintenance-exclusion-end 2026-12-26T00:00:00Z

网络配置

基本写法:创建私有集群 gcloud container clusters create <集群> --region <区域> --enable-private-nodes --master-ipv4-cidr <CIDR>

# 创建私有节点集群
gcloud container clusters create my-gke \
  --region us-central1 \
  --enable-private-nodes \
  --master-ipv4-cidr 172.16.0.0/28 \
  --enable-ip-alias

基本写法:启用主授权网络 gcloud container clusters update <集群> --region <区域> --enable-master-authorized-networks --master-authorized-networks <CIDR>

# 仅允许指定 IP 段访问控制面
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-master-authorized-networks \
  --master-authorized-networks 203.0.113.0/24

基本写法:启用 Ingress gcloud container clusters update <集群> --region <区域> --enable-addons HttpLoadBalancing

# 启用 HTTP(S) 负载均衡器
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-addons HttpLoadBalancing

基本写法:启用 Network Policy gcloud container clusters update <集群> --region <区域> --enable-network-policy

# 启用网络策略(限制 Pod 间通信)
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-network-policy

安全与身份

基本写法:启用 Workload Identity gcloud container clusters update <集群> --region <区域> --workload-pool <项目ID>.svc.id.goog

# 在已有集群启用 Workload Identity
gcloud container clusters update my-gke \
  --region us-central1 \
  --workload-pool my-project-123.svc.id.goog

基本写法:创建 IAM 绑定 gcloud iam service-accounts add-iam-policy-binding <SA> --role roles/iam.workloadIdentityUser --member <成员>

# 允许 K8s SA 使用 GCP SA
gcloud iam service-accounts add-iam-policy-binding \
  my-gsa@my-project-123.iam.gserviceaccount.com \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:my-project-123.svc.id.goog[default/my-ksa]"

基本写法:为 K8s SA 添加注解 kubectl annotate serviceaccount <SA> iam.gke.io/gcp-service-account=<GCP SA>

# 注解 K8s SA 关联 GCP SA
kubectl annotate serviceaccount my-ksa \
  iam.gke.io/gcp-service-account=my-gsa@my-project-123.iam.gserviceaccount.com

基本写法:启用 Binary Authorization gcloud container clusters update <集群> --region <区域> --enable-binauthz

# 启用 Binary Authorization 强制镜像签名验证
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-binauthz

监控与日志

基本写法:启用 Cloud Monitoring gcloud container clusters update <集群> --region <区域> --enable-dataplane-v2 --logging=<日志类型>

# 启用系统与工作负载监控
gcloud container clusters update my-gke \
  --region us-central1 \
  --logging=SYSTEM,WORKLOAD \
  --monitoring=SYSTEM

基本写法:查询日志 gcloud logging read "resource.type=\"k8s_container\"" --limit <数量>

# 查询 GKE 容器日志
gcloud logging read \
  'resource.type="k8s_container" AND resource.labels.cluster_name="my-gke"' \
  --limit 50 \
  --format=json

基本写法:流式日志 gcloud logging tail "resource.type=\"k8s_container\""

# 实时跟踪容器日志
gcloud logging tail \
  'resource.type="k8s_container" AND resource.labels.cluster_name="my-gke"'

基本写法:查询指标 gcloud monitoring metrics list --filter <过滤>

# 查询容器 CPU 利用率
gcloud monitoring time-series list \
  --filter 'metric.type="kubernetes.io/container/cpu/core_usage_time"' \
  --interval-start-time 2026-07-31T00:00:00Z \
  --interval-end-time 2026-07-31T01:00:00Z

附加组件与功能

基本写法:启用 Cloud Run on GKE gcloud container clusters update <集群> --region <区域> --enable-addons CloudRun

# 启用 Cloud Run 附加组件
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-addons CloudRun

基本写法:启用 Config Sync gcloud container clusters update <集群> --region <区域> --enable-config-sync

# 启用 Config Sync 用于 GitOps 配置
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-config-sync

基本写法:启用 HPA gcloud container clusters update <集群> --region <区域> --enable-horizontal-pod-autoscaling

# 启用水平 Pod 自动伸缩
gcloud container clusters update my-gke \
  --region us-central1 \
  --enable-horizontal-pod-autoscaling

基本写法:启用 GKE Hub gcloud container hub memberships register <集群> --gke-cluster <区域>/<集群>

# 将集群注册到 GKE Hub 用于多集群管理
gcloud container hub memberships register my-gke \
  --gke-cluster us-central1/my-gke \
  --enable-workload-identity

集群操作

基本写法:停止集群 gcloud container clusters update <集群> --region <区域> --no-enable-autoscaling

# 缩容到 0(等效停止)
gcloud container clusters resize my-gke \
  --region us-central1 \
  --node-pool default-pool \
  --num-nodes 0

基本写法:删除集群 gcloud container clusters delete <集群> --region <区域>

# 删除指定集群
gcloud container clusters delete my-gke \
  --region us-central1

基本写法:配置默认区域 gcloud config set compute/region <区域>

# 设置默认计算区域避免每次指定
gcloud config set compute/region us-central1

基本写法:查看操作列表 gcloud container operations list --region <区域>

# 查看集群操作历史
gcloud container operations list \
  --region us-central1 \
  --filter="status=RUNNING"

Artifact Registry 镜像

基本写法:创建 Artifact Registry gcloud artifacts repositories create <仓库名> --repository-format docker --location <位置>

# 创建 Docker 仓库
gcloud artifacts repositories create my-repo \
  --repository-format docker \
  --location us-central1

基本写法:配置 Docker 认证 gcloud auth configure-docker <位置>-docker.pkg.dev

# 为 Artifact Registry 配置 Docker 凭证
gcloud auth configure-docker us-central1-docker.pkg.dev

基本写法:列出仓库镜像 gcloud artifacts docker images list <位置>-docker.pkg.dev/<项目>/<仓库>

# 列出仓库中所有镜像
gcloud artifacts docker images list \
  us-central1-docker.pkg.dev/my-project-123/my-repo

基本写法:清理无标签镜像 gcloud artifacts docker images delete <镜像> --delete-tags

# 删除无标签的镜像
gcloud artifacts docker images list \
  us-central1-docker.pkg.dev/my-project-123/my-repo \
  --filter="-tags:*" \
  --format="get(package)" \
  | xargs -I{} gcloud artifacts docker images delete {}