Docker Swarm 集群使用指南概述-Kubernetes

时间:2025-04-16 07:15:46

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>