1. 必需的工具
a. kubectl
这是 Kubernetes 的命令行工具,用于与 Kubernetes API 进行交互。您需要确保在本地或管理节点上安装了 kubectl
。
-
安装:
# 对于 macOS brew install kubectl # 对于 Linux curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
b. Kubernetes 集群
确保您有一个运行中的 Kubernetes 集群。您可以使用 Minikube、kubeadm、GKE、EKS 等工具来创建和管理 Kubernetes 集群。
2. 主要命令和资源对象
a. 部署(Deployment)
Kubernetes 中的 Deployment 是用于管理无状态应用程序的主要资源对象。您可以使用它来定义要运行的应用程序的所需状态,并 Kubernetes 将确保集群达到该状态。
-
创建一个 Deployment:
创建一个 YAML 文件(如nginx-deployment.yaml
)来定义 Deployment,例如:apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: replicas: 3 selector: matchLabels: app: my-nginx template: metadata: labels: app: my-nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
-
使用
kubectl
命令创建 Deployment:kubectl apply -f nginx-deployment.yaml
b. 服务(Service)
创建一个 Service,以便外部能够访问您的 Deployment 中的 Pods。
-
创建一个 Service:
创建一个 YAML 文件(如nginx-service.yaml
)来定义 Service,例如:apiVersion: v1 kind: Service metadata: name: my-nginx-service spec: selector: app: my-nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer # 或 ClusterIP / NodePort
-
使用
kubectl
命令创建 Service:kubectl apply -f nginx-service.yaml
c. 更新 Deployment
如果您想要更新应用程序的镜像或其他配置,您可以使用 kubectl set image
或直接更新 Deployment YAML 文件。
-
更新镜像:
kubectl set image deployment/my-nginx nginx=nginx:latest
-
或者更新 YAML 文件并重新应用:
kubectl apply -f nginx-deployment.yaml
d. 查看状态
-
查看所有 Pods、Deployment、services 和其状态:
kubectl get pods kubectl get deployments kubectl get services
e. 删除资源
如果您需要删除部署或服务,可以使用以下命令:
-
删除 Deployment or Service:
kubectl delete deployment my-nginx kubectl delete service my-nginx-service
3. 其他工具和功能
a. Helm
Helm 是 Kubernetes 的包管理工具,可以简化应用程序的部署和管理。您可以使用 Helm Charts 来定义和部署复杂的应用程序。
-
安装 Helm:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
b. 监控和日志
使用 Prometheus 和 Grafana 监控集群的性能,使用 Kubernetes 内置的 kubectl logs
命令查看 Pods 的日志。
-
查看 Pod 日志:
kubectl logs <pod-name>