Kubernetes (K8s) 是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。以下是 Kubernetes 的入门指南,涵盖了基本概念、安装、常用命令以及部署示例。

基本概念

  1. Pod:Kubernetes 中最小的可部署单元,一个 Pod 可以包含一个或多个容器。
  2. Node:运行 Pod 的机器,可以是物理机或虚拟机。
  3. Cluster:一组 Node 组成的集合,运行在 Kubernetes 控制平面下。
  4. Namespace:用于将资源分隔开的虚拟集群。
  5. Deployment:管理 Pod 的部署和缩放。
  6. Service:定义一组 Pod 的逻辑集合,并定义如何访问它们。
  7. ConfigMap 和 Secret:存储配置信息和敏感信息。

安装 Kubernetes

可以使用 Minikube 在本地机器上安装 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 实现,可以在本地运行单节点集群。

  1. 安装 Minikube 和 kubectl:

  2. 启动 Minikube:

    minikube start
    
  3. 验证安装:

    kubectl cluster-info
    

常用命令

  1. 创建 Pod

    kubectl run mypod --image=nginx --restart=Never
    
  2. 查看 Pod

    kubectl get pods
    
  3. 描述 Pod

    kubectl describe pod mypod
    
  4. 删除 Pod

    kubectl delete pod mypod
    
  5. 创建 Deployment

    kubectl create deployment myapp --image=nginx
    
  6. 查看 Deployment

    kubectl get deployments
    
  7. 扩展 Deployment

    kubectl scale deployment myapp --replicas=3
    
  8. 暴露 Deployment

    kubectl expose deployment myapp --type=NodePort --port=80
    
  9. 查看 Service

    kubectl get services
    

部署示例

以下是一个简单的示例,展示如何在 Kubernetes 中部署一个 Nginx 应用。

  1. 创建 Deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    

    将上述内容保存为 nginx-deployment.yaml 文件,然后应用该文件:

    kubectl apply -f nginx-deployment.yaml
    
  2. 创建 Service

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: NodePort
    

    将上述内容保存为 nginx-service.yaml 文件,然后应用该文件:

    kubectl apply -f nginx-service.yaml
    
  3. 验证部署

    查看 Pod、Deployment 和 Service 的状态:

    kubectl get pods
    kubectl get deployments
    kubectl get services
    

    通过 Minikube IP 访问 Nginx 服务:

    minikube service nginx-service
    

进阶

  1. ConfigMap 和 Secret

    • 创建 ConfigMap:
      kubectl create configmap my-config --from-literal=key1=value1
      
    • 创建 Secret:
      kubectl create secret generic my-secret --from-literal=password=my-password
      
  2. 持久化存储 (Persistent Volumes and Persistent Volume Claims)

    • 创建 Persistent Volume:
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: my-pv
      spec:
        capacity:
          storage: 1Gi
        accessModes:
          - ReadWriteOnce
        hostPath:
          path: "/mnt/data"
      
    • 创建 Persistent Volume Claim:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: my-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
      
  3. Ingress 控制器

    • 创建 Ingress 资源以路由 HTTP 和 HTTPS 流量:
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: example-ingress
      spec:
        rules:
        - host: example.com
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: nginx-service
                  port:
                    number: 80
      

通过这些步骤,您可以入门 Kubernetes 并开始在集群中部署和管理容器化应用程序。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐