4787 字
24 分钟

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#

Terminal window
# 安装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#

Terminal window
# 查看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#

Terminal window
# 安装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#

Terminal window
# 查看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#

Terminal window
# 下载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#

Terminal window
# 查看当前项目
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#

Terminal window
# 安装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#

Terminal window
# 查看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#

Terminal window
# 安装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#

Terminal window
# 查看集群信息
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

云资源管理#

虚拟机管理#

启动和停止虚拟机#

Terminal window
# 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 # 启动

创建和删除虚拟机#

Terminal window
# 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

虚拟机监控#

Terminal window
# 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

存储管理#

创建和删除存储#

Terminal window
# 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

上传和下载文件#

Terminal window
# 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

网络管理#

创建和删除网络#

Terminal window
# 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

配置安全组和防火墙#

Terminal window
# 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是一个开源的基础设施即代码工具,用于构建、更改和版本管理基础设施。

Terminal window
# 安装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资源。

Terminal window
# 创建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资源。

Terminal window
# 创建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#

Terminal window
# 创建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#

Terminal window
# 创建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#

Terminal window
# 创建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#

Terminal window
# 安装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集群仪表板

云服务安全#

身份和访问管理#

Terminal window
# 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

加密和密钥管理#

Terminal window
# 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

安全审计和合规性#

Terminal window
# 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

云服务成本管理#

成本监控和分析#

Terminal window
# 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

成本优化#

Terminal window
# 预留实例(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

云服务迁移#

评估和规划#

Terminal window
# 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

执行迁移#

Terminal window
# 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. 迁移应用程序到云服务。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Linux云服务管理命令和技巧
https://blog.vanilla.net.cn/posts/2026-02-05-linux-cloud-services/
作者
鹁鸪
发布于
2026-02-09
许可协议
CC BY-NC-SA 4.0

评论区

目录