mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1805 words
5 minutes
Linux云服务管理命令和技巧
2026-02-09

Linux云服务管理命令和技巧#

云服务概述#

云服务是一种通过网络提供计算资源、存储资源和应用程序的服务模式。它可以帮助用户快速部署和管理应用程序,减少基础设施成本,提高资源利用率。Linux系统是云服务的主要操作系统,本文将介绍Linux系统中常用的云服务管理命令和技巧,帮助用户更高效地管理和使用云服务。

主要云服务提供商#

公共云#

  1. Amazon Web Services (AWS):全球最大的云服务提供商,提供丰富的云服务产品。
  2. Microsoft Azure:微软的云服务平台,提供企业级云服务。
  3. Google Cloud Platform (GCP):谷歌的云服务平台,提供高性能的云服务。
  4. Alibaba Cloud:阿里巴巴的云服务平台,提供亚太地区领先的云服务。
  5. Tencent Cloud:腾讯的云服务平台,提供国内领先的云服务。

私有云#

  1. OpenStack:开源的云操作系统,用于构建私有云。
  2. VMware vSphere: VMware的虚拟化平台,用于构建私有云。
  3. Microsoft Hyper-V:微软的虚拟化平台,用于构建私有云。
  4. Kubernetes:开源的容器编排平台,用于构建容器云。

云服务管理工具#

AWS CLI#

AWS CLI是Amazon Web Services的命令行工具,用于管理AWS资源。

安装AWS CLI#

# 安装AWS CLI v2(Linux)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# 验证AWS CLI安装
aws --version
# 配置AWS CLI
aws configure
# 输入AWS Access Key ID、AWS Secret Access Key、Default region name、Default output format

使用AWS CLI#

# 查看AWS CLI配置
aws configure list
# 查看EC2实例
aws ec2 describe-instances
# 启动EC2实例
aws ec2 start-instances --instance-ids i-1234567890abcdef0
# 停止EC2实例
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
# 创建S3存储桶
aws s3 mb s3://bucket-name
# 上传文件到S3存储桶
aws s3 cp file.txt s3://bucket-name/
# 下载文件从S3存储桶
aws s3 cp s3://bucket-name/file.txt .
# 列出S3存储桶中的文件
aws s3 ls s3://bucket-name/
# 删除S3存储桶中的文件
aws s3 rm s3://bucket-name/file.txt
# 删除S3存储桶
aws s3 rb s3://bucket-name --force
# 查看Lambda函数
aws lambda list-functions
# 查看SNS主题
aws sns list-topics
# 查看SQS队列
aws sqs list-queues
# 查看RDS实例
aws rds describe-db-instances
# 查看DynamoDB表
aws dynamodb list-tables

Azure CLI#

Azure CLI是Microsoft Azure的命令行工具,用于管理Azure资源。

安装Azure CLI#

# 安装Azure CLI(Debian/Ubuntu)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# 安装Azure CLI(RHEL/CentOS)
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
sudo yum install -y azure-cli
# 验证Azure CLI安装
az --version
# 登录Azure
az login
# 在浏览器中打开提供的URL,输入代码进行登录

使用Azure CLI#

# 查看Azure订阅
az account list
# 查看Azure资源组
az group list
# 创建Azure资源组
az group create --name resource-group-name --location eastus
# 查看Azure虚拟机
az vm list
# 创建Azure虚拟机
az vm create --resource-group resource-group-name --name vm-name --image UbuntuLTS --admin-username azureuser --generate-ssh-keys
# 启动Azure虚拟机
az vm start --resource-group resource-group-name --name vm-name
# 停止Azure虚拟机
az vm stop --resource-group resource-group-name --name vm-name
# 查看Azure存储账户
az storage account list
# 创建Azure存储账户
az storage account create --name storage-account-name --resource-group resource-group-name --location eastus --sku Standard_LRS
# 查看Azure Blob容器
az storage container list --account-name storage-account-name --account-key account-key
# 创建Azure Blob容器
az storage container create --name container-name --account-name storage-account-name --account-key account-key
# 上传文件到Azure Blob容器
az storage blob upload --container-name container-name --name blob-name --file file.txt --account-name storage-account-name --account-key account-key
# 下载文件从Azure Blob容器
az storage blob download --container-name container-name --name blob-name --file file.txt --account-name storage-account-name --account-key account-key
# 查看Azure App Service
az webapp list
# 创建Azure App Service
az webapp create --resource-group resource-group-name --plan app-service-plan-name --name webapp-name --runtime "NODE|14-lts"

Google Cloud CLI#

Google Cloud CLI是Google Cloud Platform的命令行工具,用于管理GCP资源。

安装Google Cloud CLI#

# 下载Google Cloud CLI
curl https://sdk.cloud.google.com | bash
# 重启终端
exec -l $SHELL
# 初始化Google Cloud CLI
gcloud init
# 登录Google账号,选择项目和区域
# 验证Google Cloud CLI安装
gcloud --version

使用Google Cloud CLI#

# 查看当前项目
gcloud config get-value project
# 列出项目
gcloud projects list
# 设置项目
gcloud config set project project-id
# 查看Compute Engine实例
gcloud compute instances list
# 创建Compute Engine实例
gcloud compute instances create instance-name --machine-type n1-standard-1 --image-family ubuntu-2004-lts --image-project ubuntu-os-cloud
# 启动Compute Engine实例
gcloud compute instances start instance-name
# 停止Compute Engine实例
gcloud compute instances stop instance-name
# 查看Cloud Storage存储桶
gcloud storage buckets list
# 创建Cloud Storage存储桶
gcloud storage buckets create gs://bucket-name
# 上传文件到Cloud Storage存储桶
gcloud storage cp file.txt gs://bucket-name/
# 下载文件从Cloud Storage存储桶
gcloud storage cp gs://bucket-name/file.txt .
# 查看Cloud Functions
gcloud functions list
# 查看Cloud SQL实例
gcloud sql instances list
# 查看BigQuery数据集
gcloud bigquery datasets list

OpenStack CLI#

OpenStack CLI是OpenStack的命令行工具,用于管理OpenStack资源。

安装OpenStack CLI#

# 安装OpenStack CLI(使用pip)
pip install python-openstackclient
# 验证OpenStack CLI安装
openstack --version
# 配置OpenStack CLI
# 编辑~/.openrc文件,添加以下内容
# export OS_AUTH_URL=https://openstack-api-endpoint:5000/v3
# export OS_PROJECT_ID=project-id
# export OS_PROJECT_NAME="project-name"
# export OS_USER_DOMAIN_NAME="Default"
# export OS_PROJECT_DOMAIN_NAME="Default"
# export OS_USERNAME="username"
# export OS_PASSWORD="password"
# export OS_REGION_NAME="region-name"
# export OS_INTERFACE=public
# export OS_IDENTITY_API_VERSION=3
# 加载OpenStack配置
source ~/.openrc

使用OpenStack CLI#

# 查看OpenStack服务
openstack service list
# 查看OpenStack端点
openstack endpoint list
# 查看Nova实例
openstack server list
# 创建Nova实例
openstack server create --flavor m1.small --image ubuntu-20.04 --network private network instance-name
# 启动Nova实例
openstack server start instance-name
# 停止Nova实例
openstack server stop instance-name
# 查看Cinder卷
openstack volume list
# 创建Cinder卷
openstack volume create --size 10 volume-name
# 附加Cinder卷到Nova实例
openstack server add volume instance-name volume-name
# 查看Neutron网络
openstack network list
# 查看Swift存储桶
openstack container list
# 创建Swift存储桶
openstack container create container-name
# 上传文件到Swift存储桶
openstack object create container-name file.txt
# 下载文件从Swift存储桶
openstack object save container-name file.txt

Kubernetes CLI (kubectl)#

kubectl是Kubernetes的命令行工具,用于管理Kubernetes集群。

安装kubectl#

# 安装kubectl(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安装
kubectl version --client
# 配置kubectl
# 复制kubeconfig文件到~/.kube/config
# 或者使用kubectl config命令配置

使用kubectl#

# 查看集群信息
kubectl cluster-info
# 查看节点
kubectl get nodes
# 查看Pod
kubectl get pods -A
# 查看服务
kubectl get services -A
# 查看部署
kubectl get deployments -A
# 创建Pod
kubectl run pod-name --image=nginx
# 删除Pod
kubectl delete pod pod-name
# 创建部署
kubectl create deployment deployment-name --image=nginx
# 扩展部署
kubectl scale deployment deployment-name --replicas=3
# 更新部署
kubectl set image deployment deployment-name nginx=nginx:latest
# 查看Pod日志
kubectl logs pod-name
# 进入Pod
kubectl exec -it pod-name -- /bin/bash

云资源管理#

虚拟机管理#

启动和停止虚拟机#

# AWS
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
# Azure
az vm start --resource-group resource-group-name --name vm-name
az vm stop --resource-group resource-group-name --name vm-name
# GCP
gcloud compute instances start instance-name
gcloud compute instances stop instance-name
# OpenStack
openstack server start instance-name
openstack server stop instance-name
# Kubernetes
kubectl scale deployment deployment-name --replicas=0 # 停止
kubectl scale deployment deployment-name --replicas=3 # 启动

创建和删除虚拟机#

# AWS
aws ec2 run-instances --image-id ami-0c55b159cbfafe1f0 --instance-type t2.micro --key-name key-pair-name --security-group-ids sg-12345678
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
# Azure
az vm create --resource-group resource-group-name --name vm-name --image UbuntuLTS --admin-username azureuser --generate-ssh-keys
az vm delete --resource-group resource-group-name --name vm-name --yes
# GCP
gcloud compute instances create instance-name --machine-type n1-standard-1 --image-family ubuntu-2004-lts --image-project ubuntu-os-cloud
gcloud compute instances delete instance-name --quiet
# OpenStack
openstack server create --flavor m1.small --image ubuntu-20.04 --network private network instance-name
openstack server delete instance-name

虚拟机监控#

# AWS
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-1234567890abcdef0 --start-time 2026-02-05T00:00:00Z --end-time 2026-02-05T23:59:59Z --period 3600 --statistics Average
# Azure
az monitor metrics list --resource /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachines/vm-name --metric cpuPercentage --start-time 2026-02-05T00:00:00Z --end-time 2026-02-05T23:59:59Z
# GCP
gcloud monitoring metrics list --filter "metric.type=\"compute.googleapis.com/instance/cpu/utilization\""
gcloud monitoring timeseries list --filter "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\" AND resource.label.instance_id=\"instance-id\"" --interval "startTime=2026-02-05T00:00:00Z,endTime=2026-02-05T23:59:59Z"
# Kubernetes
kubectl top pod
kubectl top node

存储管理#

创建和删除存储#

# AWS S3
aws s3 mb s3://bucket-name
aws s3 rb s3://bucket-name --force
# AWS EBS
aws ec2 create-volume --availability-zone us-east-1a --size 10 --volume-type gp2
aws ec2 delete-volume --volume-id vol-1234567890abcdef0
# Azure Blob Storage
az storage account create --name storage-account-name --resource-group resource-group-name --location eastus --sku Standard_LRS
az storage account delete --name storage-account-name --resource-group resource-group-name --yes
# Azure Disk
az disk create --resource-group resource-group-name --name disk-name --size-gb 10 --sku Standard_LRS
az disk delete --resource-group resource-group-name --name disk-name --yes
# GCP Cloud Storage
gcloud storage buckets create gs://bucket-name
gcloud storage buckets delete gs://bucket-name
# GCP Persistent Disk
gcloud compute disks create disk-name --size=10GB --zone=us-central1-a
gcloud compute disks delete disk-name --zone=us-central1-a --quiet
# OpenStack Cinder
openstack volume create --size 10 volume-name
openstack volume delete volume-name
# Kubernetes Persistent Volume
kubectl apply -f pv.yaml
kubectl delete pv pv-name

上传和下载文件#

# AWS S3
aws s3 cp file.txt s3://bucket-name/
aws s3 cp s3://bucket-name/file.txt .
# Azure Blob Storage
az storage blob upload --container-name container-name --name blob-name --file file.txt --account-name storage-account-name --account-key account-key
az storage blob download --container-name container-name --name blob-name --file file.txt --account-name storage-account-name --account-key account-key
# GCP Cloud Storage
gcloud storage cp file.txt gs://bucket-name/
gcloud storage cp gs://bucket-name/file.txt .
# OpenStack Swift
openstack object create container-name file.txt
openstack object save container-name file.txt

网络管理#

创建和删除网络#

# AWS VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
aws ec2 delete-vpc --vpc-id vpc-12345678
# AWS Subnet
aws ec2 create-subnet --vpc-id vpc-12345678 --cidr-block 10.0.0.0/24 --availability-zone us-east-1a
aws ec2 delete-subnet --subnet-id subnet-12345678
# Azure Virtual Network
az network vnet create --name vnet-name --resource-group resource-group-name --address-prefixes 10.0.0.0/16 --subnet-name subnet-name --subnet-prefixes 10.0.0.0/24
az network vnet delete --name vnet-name --resource-group resource-group-name --yes
# GCP VPC Network
gcloud compute networks create network-name --subnet-mode custom
gcloud compute networks subnets create subnet-name --network network-name --region us-central1 --range 10.0.0.0/24
gcloud compute networks delete network-name --quiet
# OpenStack Neutron
openstack network create network-name
openstack subnet create --network network-name --subnet-range 10.0.0.0/24 subnet-name
openstack network delete network-name
# Kubernetes Network Policy
kubectl apply -f network-policy.yaml
kubectl delete networkpolicy network-policy-name

配置安全组和防火墙#

# AWS Security Group
aws ec2 create-security-group --group-name sg-name --description "SG Description" --vpc-id vpc-12345678
aws ec2 authorize-security-group-ingress --group-id sg-12345678 --protocol tcp --port 22 --cidr 0.0.0.0/0
aws ec2 delete-security-group --group-id sg-12345678
# Azure Network Security Group
az network nsg create --name nsg-name --resource-group resource-group-name
az network nsg rule create --name ssh-rule --nsg-name nsg-name --resource-group resource-group-name --priority 100 --source-address-prefixes '*' --destination-port-ranges 22 --access Allow --protocol Tcp
az network nsg delete --name nsg-name --resource-group resource-group-name --yes
# GCP Firewall Rule
gcloud compute firewall-rules create allow-ssh --network network-name --allow tcp:22 --source-ranges 0.0.0.0/0
gcloud compute firewall-rules delete allow-ssh --quiet
# OpenStack Security Group
openstack security group create sg-name
openstack security group rule create --protocol tcp --dst-port 22 sg-name
openstack security group delete sg-name

云服务部署#

基础设施即代码 (IaC)#

Terraform#

Terraform是一个开源的基础设施即代码工具,用于构建、更改和版本管理基础设施。

# 安装Terraform
wget https://releases.hashicorp.com/terraform/1.1.7/terraform_1.1.7_linux_amd64.zip
unzip terraform_1.1.7_linux_amd64.zip
sudo mv terraform /usr/local/bin/
# 验证Terraform安装
terraform --version
# 初始化Terraform
terraform init
# 查看Terraform计划
terraform plan
# 应用Terraform配置
terraform apply
# 销毁Terraform资源
terraform destroy
# Terraform配置示例(AWS EC2实例)
# provider "aws" {
# region = "us-east-1"
# }
#
# resource "aws_instance" "example" {
# ami = "ami-0c55b159cbfafe1f0"
# instance_type = "t2.micro"
#
# tags = {
# Name = "ExampleInstance"
# }
# }

CloudFormation#

CloudFormation是AWS的基础设施即代码服务,用于创建和管理AWS资源。

# 创建CloudFormation堆栈
aws cloudformation create-stack --stack-name stack-name --template-body file://template.yaml
# 查看CloudFormation堆栈
aws cloudformation describe-stacks --stack-name stack-name
# 更新CloudFormation堆栈
aws cloudformation update-stack --stack-name stack-name --template-body file://template.yaml
# 删除CloudFormation堆栈
aws cloudformation delete-stack --stack-name stack-name
# CloudFormation模板示例(AWS EC2实例)
# AWSTemplateFormatVersion: '2010-09-09'
# Resources:
# ExampleInstance:
# Type: AWS::EC2::Instance
# Properties:
# ImageId: ami-0c55b159cbfafe1f0
# InstanceType: t2.micro
# Tags:
# - Key: Name
# Value: ExampleInstance

ARM Templates#

ARM Templates是Azure的基础设施即代码服务,用于创建和管理Azure资源。

# 创建ARM模板部署
az deployment group create --resource-group resource-group-name --template-file template.json
# 查看ARM模板部署
az deployment group show --resource-group resource-group-name --name deployment-name
# 删除ARM模板部署的资源
# 使用az resource delete命令删除各个资源
# ARM模板示例(Azure VM)
# {
# "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
# "contentVersion": "1.0.0.0",
# "resources": [
# {
# "type": "Microsoft.Compute/virtualMachines",
# "apiVersion": "2021-03-01",
# "name": "exampleVM",
# "location": "[resourceGroup().location]",
# "properties": {
# "hardwareProfile": {
# "vmSize": "Standard_B1s"
# },
# "osProfile": {
# "computerName": "exampleVM",
# "adminUsername": "azureuser",
# "adminPassword": "Password12345!"
# },
# "storageProfile": {
# "imageReference": {
# "publisher": "Canonical",
# "offer": "UbuntuServer",
# "sku": "18.04-LTS",
# "version": "latest"
# },
# "osDisk": {
# "createOption": "FromImage"
# }
# },
# "networkProfile": {
# "networkInterfaces": [
# {
# "id": "[resourceId('Microsoft.Network/networkInterfaces', 'exampleVMNic')]"
# }
# ]
# }
# }
# },
# {
# "type": "Microsoft.Network/networkInterfaces",
# "apiVersion": "2021-03-01",
# "name": "exampleVMNic",
# "location": "[resourceGroup().location]",
# "properties": {
# "ipConfigurations": [
# {
# "name": "ipconfig1",
# "properties": {
# "subnet": {
# "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'exampleVNet', 'default')]"
# },
# "publicIPAddress": {
# "id": "[resourceId('Microsoft.Network/publicIPAddresses', 'exampleVMPublicIP')]"
# }
# }
# }
# ]
# }
# },
# {
# "type": "Microsoft.Network/publicIPAddresses",
# "apiVersion": "2021-03-01",
# "name": "exampleVMPublicIP",
# "location": "[resourceGroup().location]",
# "properties": {
# "publicIPAllocationMethod": "Dynamic"
# }
# },
# {
# "type": "Microsoft.Network/virtualNetworks",
# "apiVersion": "2021-03-01",
# "name": "exampleVNet",
# "location": "[resourceGroup().location]",
# "properties": {
# "addressSpace": {
# "addressPrefixes": [
# "10.0.0.0/16"
# ]
# },
# "subnets": [
# {
# "name": "default",
# "properties": {
# "addressPrefix": "10.0.0.0/24"
# }
# }
# ]
# }
# }
# ]
# }

云服务监控和告警#

AWS CloudWatch#

# 创建CloudWatch告警
aws cloudwatch put-metric-alarm --alarm-name cpu-alarm --alarm-description "CPU utilization alarm" --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanThreshold --dimensions Name=InstanceId,Value=i-1234567890abcdef0 --evaluation-periods 1 --alarm-actions arn:aws:sns:us-east-1:123456789012:topic-name
# 查看CloudWatch告警
aws cloudwatch describe-alarms
# 删除CloudWatch告警
aws cloudwatch delete-alarms --alarm-names cpu-alarm
# 查看CloudWatch指标
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-1234567890abcdef0 --start-time 2026-02-05T00:00:00Z --end-time 2026-02-05T23:59:59Z --period 3600 --statistics Average

Azure Monitor#

# 创建Azure Monitor告警
az monitor metrics alert create --name cpu-alert --resource-group resource-group-name --scopes /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachines/vm-name --condition "avg percentage CPU > 70" --window-size 5m --evaluation-frequency 1m --action-groups action-group-name
# 查看Azure Monitor告警
az monitor metrics alert list --resource-group resource-group-name
# 删除Azure Monitor告警
az monitor metrics alert delete --name cpu-alert --resource-group resource-group-name
# 查看Azure Monitor指标
az monitor metrics list --resource /subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Compute/virtualMachines/vm-name --metric cpuPercentage --start-time 2026-02-05T00:00:00Z --end-time 2026-02-05T23:59:59Z

Google Cloud Monitoring#

# 创建Google Cloud Monitoring告警
gcloud alpha monitoring policies create --display-name="CPU Utilization Alarm" --condition="resource.type='gce_instance' AND metric.type='compute.googleapis.com/instance/cpu/utilization' AND aggregation.alignmentPeriod=60s AND aggregation.perSeriesAligner=ALIGN_MEAN AND aggregation.crossSeriesReducer=REDUCE_NONE AND aggregation.groupByFields=[] AND comparison.comparator=COMPARATOR_GREATER_THAN AND comparison.threshold.value=0.7 AND duration="60s" AND trigger.count=1" --combiner=OR --notification-channels=notification-channel-id
# 查看Google Cloud Monitoring告警
gcloud alpha monitoring policies list
# 删除Google Cloud Monitoring告警
gcloud alpha monitoring policies delete policy-id
# 查看Google Cloud Monitoring指标
gcloud monitoring timeseries list --filter "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\" AND resource.label.instance_id=\"instance-id\"" --interval "startTime=2026-02-05T00:00:00Z,endTime=2026-02-05T23:59:59Z"

Prometheus + Grafana#

# 安装Prometheus和Grafana(使用Helm在Kubernetes中)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack
# 访问Grafana
# kubectl port-forward svc/prometheus-grafana 3000:80
# 打开浏览器访问http://localhost:3000
# 配置Prometheus告警规则
# 编辑prometheus-rules.yaml文件
# 配置Grafana仪表板
# 导入预定义的仪表板,如Kubernetes集群仪表板

云服务安全#

身份和访问管理#

# AWS IAM
aws iam create-user --user-name user-name
aws iam create-access-key --user-name user-name
aws iam attach-user-policy --user-name user-name --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
aws iam delete-user --user-name user-name
# Azure AD
az ad user create --display-name "User Name" --user-principal-name user@example.com --password "Password12345!"
az role assignment create --assignee user@example.com --role "Contributor" --scope /subscriptions/subscription-id/resourceGroups/resource-group-name
az ad user delete --id user@example.com
# GCP IAM
gcloud iam service-accounts create service-account-name --display-name "Service Account"
gcloud iam service-accounts keys create key.json --iam-account service-account-name@project-id.iam.gserviceaccount.com
gcloud projects add-iam-policy-binding project-id --member "serviceAccount:service-account-name@project-id.iam.gserviceaccount.com" --role "roles/editor"
gcloud iam service-accounts delete service-account-name@project-id.iam.gserviceaccount.com
# Kubernetes RBAC
kubectl create rolebinding user-edit --clusterrole=edit --user=user --namespace=default
kubectl delete rolebinding user-edit --namespace=default

加密和密钥管理#

# AWS KMS
aws kms create-key
aws kms create-alias --target-key-id key-id --alias-name alias/alias-name
aws kms encrypt --key-id alias/alias-name --plaintext fileb://plaintext.txt --output text --query CiphertextBlob | base64 --decode > ciphertext.bin
aws kms decrypt --ciphertext-blob fileb://ciphertext.bin --output text --query Plaintext | base64 --decode > decrypted.txt
# Azure Key Vault
az keyvault create --name keyvault-name --resource-group resource-group-name --location eastus --sku standard
az keyvault secret set --vault-name keyvault-name --name secret-name --value "secret-value"
az keyvault secret show --vault-name keyvault-name --name secret-name --query value
az keyvault delete --name keyvault-name --resource-group resource-group-name --yes
# GCP KMS
gcloud kms keyrings create keyring-name --location global
gcloud kms keys create key-name --keyring keyring-name --location global --purpose encryption
gcloud kms encrypt --key key-name --keyring keyring-name --location global --plaintext-file plaintext.txt --ciphertext-file ciphertext.bin
gcloud kms decrypt --key key-name --keyring keyring-name --location global --ciphertext-file ciphertext.bin --plaintext-file decrypted.txt
# Kubernetes Secrets
kubectl create secret generic secret-name --from-literal=username=admin --from-literal=password=secret
kubectl get secret secret-name -o jsonpath='{.data.password}' | base64 --decode
kubectl delete secret secret-name

安全审计和合规性#

# AWS CloudTrail
aws cloudtrail create-trail --name trail-name --s3-bucket-name bucket-name
aws cloudtrail start-logging --name trail-name
aws cloudtrail describe-trails
# AWS Config
aws configservice put-config-rule --config-rule file://config-rule.json
aws configservice describe-config-rules
# Azure Policy
az policy definition create --name policy-name --display-name "Policy Name" --description "Policy Description" --rules policy-rules.json --mode indexed
az policy assignment create --name policy-assignment-name --policy policy-name --scope /subscriptions/subscription-id/resourceGroups/resource-group-name
# GCP Cloud Audit Logs
gcloud logging sinks create sink-name storage.googleapis.com/bucket-name --log-filter "resource.type=gce_instance"
# GCP Security Command Center
gcloud scc assets list --organization=organization-id

云服务成本管理#

成本监控和分析#

# AWS Cost Explorer
aws ce get-cost-and-usage --time-period Start=2026-01-01,End=2026-01-31 --granularity=DAILY --metrics=BlendedCost
# AWS Budgets
aws budgets create-budget --account-id 123456789012 --budget file://budget.json --notifications-with-subscribers file://notifications.json
# Azure Cost Management
az consumption budget create --name budget-name --resource-group resource-group-name --amount 100 --time-grain monthly --start-date 2026-02-01 --end-date 2026-02-29 --category cost
# GCP Cost Management
gcloud beta billing budgets create --billing-account billing-account-id --display-name budget-name --amount 100 --currency USD --time-unit MONTH

成本优化#

# 预留实例(AWS)
aws ec2 describe-reserved-instances-offerings --instance-type t2.micro --availability-zone us-east-1a --product-description "Linux/UNIX"
# spot实例(AWS)
aws ec2 request-spot-instances --spot-price "0.005" --instance-count 1 --type one-time --launch-specification file://launch-specification.json
# 虚拟机规模集(Azure)
az vmss create --name vmss-name --resource-group resource-group-name --image UbuntuLTS --admin-username azureuser --generate-ssh-keys --instance-count 3 --disable-overprovision --upgrade-policy-mode automatic
# 自动扩缩组(AWS)
aws autoscaling create-auto-scaling-group --auto-scaling-group-name asg-name --launch-configuration-name lc-name --min-size 1 --max-size 3 --desired-capacity 1 --availability-zones us-east-1a us-east-1b
# 自动扩缩(Kubernetes)
kubectl autoscale deployment deployment-name --min=1 --max=3 --cpu-percent=70

云服务迁移#

评估和规划#

# AWS Application Discovery Service
aws discovery create-application --name application-name
aws discovery describe-applications
# Azure Migrate
az migration project create --name project-name --resource-group resource-group-name --location eastus
az migration assessment create --project-name project-name --resource-group resource-group-name --assessment-name assessment-name --servers server-count --os-type linux --target-location eastus --target-subscription subscription-id
# GCP Migration Center
gcloud beta migration-center imports create --display-name import-name --data-source aws --input-file file://assets.json

执行迁移#

# AWS Server Migration Service
aws sms create-replication-job --server-id server-id --seed-replication-time 2026-02-05T00:00:00Z --frequency 6 --run-once
aws sms start-on-demand-replication-run --replication-job-id replication-job-id
# Azure Site Recovery
az recovery-services vault create --name vault-name --resource-group resource-group-name --location eastus
az recovery-services protection-container mappings create --vault-name vault-name --resource-group resource-group-name --policy-name policy-name --source-container-id source-container-id --target-container-id target-container-id
# GCP Transfer Service
gcloud transfer jobs create --description "Transfer Job" --source aws-s3 --source-path s3://bucket-name/ --sink gcs --sink-path gs://bucket-name/

云服务管理最佳实践#

设计和架构#

  1. 高可用性:设计多区域、多可用区的架构,确保服务的高可用性。
  2. 可扩展性:设计弹性架构,支持自动扩缩,应对流量变化。
  3. 安全性:实施多层次的安全措施,包括网络安全、身份认证、加密等。
  4. 可观测性:部署监控、日志和告警系统,确保系统的可观测性。
  5. 成本优化:选择合适的云服务和计费模式,优化成本。

部署和管理#

  1. 基础设施即代码:使用Terraform、CloudFormation等工具实现基础设施即代码。
  2. 持续集成和持续部署:使用CI/CD工具实现自动化部署。
  3. 版本控制:使用Git等版本控制系统管理配置和代码。
  4. 自动化测试:实施自动化测试,确保部署的质量。
  5. 文档化:文档化系统架构、部署流程和操作手册。

监控和优化#

  1. 实时监控:实时监控系统状态和性能指标。
  2. 告警管理:配置合理的告警规则,及时响应异常。
  3. 性能优化:定期分析系统性能,优化资源使用。
  4. 成本分析:定期分析云服务成本,优化成本结构。
  5. 安全审计:定期进行安全审计,发现和修复安全问题。

常见问题及解决方案#

云服务访问失败#

症状:无法访问云服务,显示连接错误。

解决方案

  • 检查网络连接
  • 检查安全组和防火墙规则
  • 检查云服务状态
  • 检查认证和授权配置

云服务成本超支#

症状:云服务成本超出预算。

解决方案

  • 分析成本报告,找出成本来源
  • 优化资源使用,如关闭未使用的资源
  • 使用预留实例或spot实例降低成本
  • 配置成本告警,及时发现成本异常

云服务性能下降#

症状:云服务性能下降,响应时间变长。

解决方案

  • 监控系统性能,找出性能瓶颈
  • 优化资源配置,如增加CPU、内存等
  • 优化应用程序代码
  • 使用CDN、缓存等技术提高性能

云服务安全事件#

症状:发生云服务安全事件,如未授权访问。

解决方案

  • 立即响应安全事件,如禁用 compromised 账号
  • 调查安全事件原因
  • 修复安全漏洞
  • 更新安全策略和流程

总结#

本文介绍了Linux系统中常用的云服务管理命令和技巧,包括云服务提供商、云服务管理工具、云资源管理、云服务部署、云服务监控和告警、云服务安全、云服务成本管理和云服务迁移等方面的内容。通过掌握这些命令和技巧,用户可以更高效地管理和使用云服务,提高云服务的可靠性、可用性和安全性。

云服务正在改变着我们部署和管理应用程序的方式,它提供了弹性、可扩展、高可用的基础设施,帮助我们快速构建和部署应用程序。随着云服务技术的不断发展,我们需要不断学习和更新知识,以适应新的挑战和机遇。

练习#

  1. 安装和配置AWS CLI,管理AWS资源。
  2. 安装和配置Azure CLI,管理Azure资源。
  3. 安装和配置Google Cloud CLI,管理GCP资源。
  4. 安装和配置OpenStack CLI,管理OpenStack资源。
  5. 安装和配置kubectl,管理Kubernetes集群。
  6. 使用Terraform部署云资源。
  7. 配置云服务监控和告警。
  8. 实施云服务安全措施。
  9. 优化云服务成本。
  10. 迁移应用程序到云服务。
Share

If this article helped you, please share it with others!

Linux云服务管理命令和技巧
https://blog.vanilla.net.cn/posts/linux/2026-02-05-linux-cloud-services/
Author
星夜
Published at
2026-02-09
License
CC BY-NC-SA 4.0

Some information may be outdated

Table of Contents