在云原生时代,工程师不仅要熟悉容器化、编排和服务网格,还要掌握大量工具和命令来进行日常运维与开发。本文将从 工具篇 和 命令篇 两个角度,详细介绍云原生工程师每天都会用到的核心技能。
一、云原生工程师常用工具
1. 容器与编排工具
- Docker:镜像构建与容器运行。
- Kubernetes (kubectl):集群管理与资源调度。
- Helm:Kubernetes 包管理器。
2. CI/CD 工具
- Jenkins:自动化构建与发布。
- ArgoCD:声明式 GitOps 部署。
- Tekton:Kubernetes 原生 CI/CD。
3. 云原生监控工具
- Prometheus:监控与指标采集。
- Grafana:可视化面板。
- Loki:日志收集与分析。
4. 服务网格与 API 网关
- Istio:流量治理与金丝雀发布。
- Kong / Nginx Ingress:网关与 API 管理。
5. 云平台工具
- kubectl:核心 CLI 工具。
- eksctl / gcloud / az:云厂商命令行工具。
二、100 条日常高频命令
1. Docker 常用命令(15 条)
# 查看本地镜像
docker images
# 启动容器
docker run -d --name web -p 8080:80 nginx
# 查看容器列表
docker ps -a
# 进入容器
docker exec -it web /bin/bash
# 停止容器
docker stop web
# 删除容器
docker rm -f web
# 删除镜像
docker rmi nginx:latest
# 构建镜像
docker build -t myapp:v1 .
# 查看日志
docker logs -f web
# 镜像打标签
docker tag myapp:v1 registry.cn/myapp:v1
# 推送镜像
docker push registry.cn/myapp:v1
# 拉取镜像
docker pull nginx:latest
# 容器复制文件
docker cp web:/etc/nginx/nginx.conf ./nginx.conf
# 容器资源使用情况
docker stats
# 清理无用镜像和容器
docker system prune -f
2. Kubernetes (kubectl) 命令(25 条)
# 查看所有命名空间
kubectl get ns
# 查看 Pod
kubectl get pods -n default
# 查看 Pod 详情
kubectl describe pod mypod -n default
# 日志查看
kubectl logs -f mypod -n default
# 进入 Pod 容器
kubectl exec -it mypod -n default -- /bin/bash
# 创建资源
kubectl apply -f deployment.yaml
# 删除资源
kubectl delete -f deployment.yaml
# 查看 Deployment
kubectl get deploy -n default
# 滚动更新
kubectl rollout restart deploy myapp -n default
# 回滚版本
kubectl rollout undo deploy myapp -n default
# 查看服务
kubectl get svc -n default
# 查看 Ingress
kubectl get ingress -n default
# 查看 ConfigMap
kubectl get configmap -n default
# 查看 Secret
kubectl get secret -n default
# 编辑 Deployment
kubectl edit deploy myapp -n default
# 强制删除 Pod
kubectl delete pod mypod -n default --force --grace-period=0
# 查看节点
kubectl get nodes
# 节点详细信息
kubectl describe node nodename
# 查看事件
kubectl get events -n default --sort-by=.metadata.creationTimestamp
# 导出资源配置
kubectl get deploy myapp -o yaml > myapp.yaml
# 指定 context
kubectl config use-context dev-cluster
# 查看当前 context
kubectl config current-context
# 查看资源占用
kubectl top pod -n default
# 查看节点占用
kubectl top node
3. Helm 命令(10 条)
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
# 更新仓库
helm repo update
# 搜索 Chart
helm search repo nginx
# 安装 Chart
helm install mynginx bitnami/nginx
# 升级 Chart
helm upgrade mynginx bitnami/nginx
# 回滚 Chart
helm rollback mynginx 1
# 删除发布
helm uninstall mynginx
# 查看 release
helm list -A
# 查看渲染后的 YAML
helm template mynginx bitnami/nginx
# 导出 values.yaml
helm show values bitnami/nginx > values.yaml
4. CI/CD (Jenkins & ArgoCD)(10 条)
# Jenkins CLI 登录
java -jar jenkins-cli.jar -s http://jenkins:8080/ -auth admin:password list-jobs
# 构建任务
java -jar jenkins-cli.jar -s http://jenkins:8080/ build myjob
# 查看任务日志
java -jar jenkins-cli.jar -s http://jenkins:8080/ console myjob
# ArgoCD 登录
argocd login argocd.example.com
# 添加 Git 仓库
argocd repo add https://github.com/myrepo.git
# 部署应用
argocd app create myapp --repo https://github.com/myrepo.git --path manifests --dest-server https://kubernetes.default.svc --dest-namespace default
# 同步应用
argocd app sync myapp
# 查看应用状态
argocd app get myapp
# 回滚应用
argocd app rollback myapp 1
# 删除应用
argocd app delete myapp
5. 监控与日志(Prometheus/Grafana/Loki)(10 条)
# 查询 Prometheus 指标
curl http://prometheus:9090/api/v1/query?query=up
# Loki 查询日志
logcli query '{app="nginx"}' --since=1h
# Grafana 导出 Dashboard
grafana-cli admin export-dashboard 1
# 导入 Dashboard
grafana-cli admin import-dashboard dashboard.json
# Prometheus 查看 targets
curl http://prometheus:9090/api/v1/targets
# 检查 alertmanager 状态
curl http://alertmanager:9093/api/v2/status
# 查询告警规则
curl http://prometheus:9090/api/v1/rules
# Loki 日志范围查询
logcli query '{namespace="default"}' --from=24h --to=now
# Grafana 插件安装
grafana-cli plugins install grafana-piechart-panel
# 重启 Grafana
systemctl restart grafana-server
6. Istio 服务网格(10 条)
# 查看网关
kubectl get gateway -n istio-system
# 查看虚拟服务
kubectl get virtualservice -A
# 查看目标规则
kubectl get destinationrule -A
# 查看 Sidecar 注入
kubectl get pod mypod -n default -o jsonpath='{.metadata.annotations.istio\.io/inject}'
# 手动注入 Sidecar
istioctl kube-inject -f deploy.yaml | kubectl apply -f -
# 检查网格配置
istioctl proxy-status
# 查看路由配置
istioctl proxy-config routes mypod -n default
# 查看集群配置
istioctl proxy-config clusters mypod -n default
# 查看监听器
istioctl proxy-config listeners mypod -n default
# 删除 VirtualService
kubectl delete virtualservice myvs -n default
7. 云平台命令(AWS/GCP/Azure 各 5 条)
# AWS EKS 获取集群
eksctl get cluster
# GCP 切换项目
gcloud config set project myproject
# GCP 获取 K8s 集群
gcloud container clusters list
# Azure 登录
az login
# Azure 获取 AKS 集群
az aks list
三、总结
- 工具层面:云原生工程师每天都会接触 Docker、K8s、Helm、CI/CD、监控、服务网格等工具。
- 命令层面:熟练掌握 100 条高频命令,能极大提升排障与开发效率。
- 实践层面:建议结合 DevOps 自动化 + GitOps 流程,形成一套完整的云原生工程师工作体系。