| name | gcloud |
| description | Google Cloud CLI 操作 |
| version | 1.0.0 |
| author | terminal-skills |
| tags | ["cloud","gcp","gcloud","gke","compute"] |
Google Cloud CLI 操作
概述
GCP 资源管理、GKE、Cloud Functions 等技能。
配置与认证
gcloud init
gcloud auth login
gcloud auth application-default login
gcloud auth activate-service-account --key-file=key.json
gcloud config list
gcloud config configurations list
gcloud config set project my-project
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
gcloud config configurations create my-config
gcloud config configurations activate my-config
Compute Engine
实例管理
gcloud compute instances list
gcloud compute instances create my-instance \
--zone=us-central1-a \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=50GB
gcloud compute instances start my-instance --zone=us-central1-a
gcloud compute instances stop my-instance --zone=us-central1-a
gcloud compute instances delete my-instance --zone=us-central1-a
gcloud compute ssh my-instance --zone=us-central1-a
gcloud compute ssh my-instance --zone=us-central1-a --command="uptime"
磁盘管理
gcloud compute disks list
gcloud compute disks create my-disk \
--zone=us-central1-a \
--size=100GB \
--type=pd-ssd
gcloud compute instances attach-disk my-instance \
--disk=my-disk \
--zone=us-central1-a
gcloud compute disks snapshot my-disk \
--zone=us-central1-a \
--snapshot-names=my-snapshot
防火墙
gcloud compute firewall-rules list
gcloud compute firewall-rules create allow-http \
--allow=tcp:80 \
--source-ranges=0.0.0.0/0 \
--target-tags=http-server
gcloud compute firewall-rules delete allow-http
Cloud Storage
gsutil ls
gsutil mb gs://my-bucket
gsutil mb -l us-central1 gs://my-bucket
gsutil cp file.txt gs://my-bucket/
gsutil cp -r ./dir gs://my-bucket/
gsutil cp gs://my-bucket/file.txt ./
gsutil cp -r gs://my-bucket/dir ./
gsutil rsync -r ./local-dir gs://my-bucket/prefix/
gsutil rsync -d -r ./local-dir gs://my-bucket/prefix/
gsutil rm gs://my-bucket/file.txt
gsutil rm -r gs://my-bucket/dir/
gsutil rb gs://my-bucket
gsutil acl ch -u AllUsers:R gs://my-bucket/file.txt
gsutil signurl -d 1h key.json gs://my-bucket/file.txt
GKE 集群
gcloud container clusters list
gcloud container clusters create my-cluster \
--zone=us-central1-a \
--num-nodes=3 \
--machine-type=e2-medium
gcloud container clusters get-credentials my-cluster --zone=us-central1-a
gcloud container clusters resize my-cluster \
--zone=us-central1-a \
--num-nodes=5
gcloud container clusters upgrade my-cluster \
--zone=us-central1-a \
--master
gcloud container clusters delete my-cluster --zone=us-central1-a
Cloud Functions
gcloud functions list
gcloud functions deploy my-function \
--runtime=nodejs18 \
--trigger-http \
--allow-unauthenticated \
--entry-point=handler \
--source=./
gcloud functions call my-function --data='{"name":"World"}'
gcloud functions logs read my-function
gcloud functions delete my-function
Cloud Run
gcloud run deploy my-service \
--image=gcr.io/my-project/my-image \
--platform=managed \
--region=us-central1 \
--allow-unauthenticated
gcloud run services list
gcloud run services describe my-service --region=us-central1
gcloud run services update my-service \
--region=us-central1 \
--memory=512Mi \
--concurrency=80
gcloud run services delete my-service --region=us-central1
IAM 管理
gcloud iam service-accounts list
gcloud iam service-accounts create my-sa \
--display-name="My Service Account"
gcloud iam service-accounts keys create key.json \
--iam-account=my-sa@my-project.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding my-project \
--member="serviceAccount:my-sa@my-project.iam.gserviceaccount.com" \
--role="roles/storage.admin"
gcloud projects get-iam-policy my-project
常见场景
场景 1:批量操作实例
gcloud compute instances list --format="value(name,zone)" | \
while read name zone; do
gcloud compute instances stop "$name" --zone="$zone" --async
done
场景 2:日志查询
gcloud logging read "resource.type=gce_instance" --limit=100
gcloud logging read "timestamp>=\"2024-01-01T00:00:00Z\"" --limit=100
gcloud logging read "severity>=ERROR" --limit=100
场景 3:导出计费数据
gcloud beta billing accounts describe BILLING_ACCOUNT_ID
gcloud billing budgets list --billing-account=BILLING_ACCOUNT_ID
故障排查
| 问题 | 排查方法 |
|---|
| 认证失败 | gcloud auth list |
| 权限不足 | 检查 IAM 角色 |
| 配额超限 | gcloud compute project-info describe |
| API 未启用 | gcloud services enable compute.googleapis.com |
gcloud compute instances list --verbosity=debug
gcloud help
gcloud compute instances create --help