• Kubernetes学习大纲


    Kubernetes(通常缩写为 K8s)是一个用于自动化部署、扩展和管理容器化(通常是 Docker 容器)应用程序的开源平台。以下是一些 Kubernetes 的核心概念和相关的命令。

    1. 集群(Cluster)和节点(Nodes)

    集群是 Kubernetes 的基础单元,由一组节点(物理或虚拟机)组成。

    命令:

    kubectl get nodes
    
    • 1

    解析:

    列出集群中所有的节点。

    2. Pod

    Pod 是 Kubernetes 的最小部署单元,通常托管一个或多个容器。

    命令:

    kubectl run nginx --image=nginx
    kubectl get pods
    
    • 1
    • 2

    解析:

    • 运行一个名为 nginx 的 Pod,并使用 nginx 镜像。
    • 列出所有的 Pod。

    3. Service

    Service 是一个抽象层,用于暴露 Pod 的网络服务。

    命令:

    kubectl expose pod nginx --port=80 --type=ClusterIP
    kubectl get svc
    
    • 1
    • 2

    解析:

    • 使用 ClusterIP 类型暴露 nginx Pod 在端口 80 上的服务。
    • 列出所有的 Service。

    4. Deployment

    Deployment 用于声明应用程序的期望状态,并由 Kubernetes 自动确保。

    命令:

    kubectl create deployment nginx-deploy --image=nginx
    kubectl get deployments
    
    • 1
    • 2

    解析:

    • 创建一个名为 nginx-deploy 的 Deployment。
    • 列出所有的 Deployment。

    5. ConfigMap 和 Secret

    用于管理配置数据和敏感信息。

    命令:

    kubectl create configmap my-config --from-literal=key1=value1
    kubectl create secret generic my-secret --from-literal=password=mypassword
    
    • 1
    • 2

    解析:

    • 创建一个 ConfigMap。
    • 创建一个 Secret。

    6. 命名空间(Namespaces)

    用于将资源分隔到逻辑上的独立区域。

    命令:

    kubectl create namespace my-namespace
    
    • 1

    解析:

    创建一个新的命名空间。

    7. Volume

    用于持久化存储。

    命令:

    kubectl apply -f my-volume.yaml
    
    • 1

    解析:

    通过 YAML 文件定义一个 Volume,并用 kubectl apply 命令来创建它。

    8. Horizontal Pod Autoscaler (HPA)

    自动根据 CPU 使用率或其他指标来扩展 Pod 的数量。

    命令:

    kubectl autoscale deployment nginx-deploy --min=2 --max=5 --cpu-percent=80
    
    • 1

    解析:

    自动缩放名为 nginx-deploy 的 Deployment,根据 CPU 使用率。

    9. 自定义资源(CRDs)

    用于扩展 Kubernetes API。

    命令:

    kubectl apply -f my-custom-resource.yaml
    
    • 1

    解析:

    使用 kubectl apply 创建自定义资源。

    10. Helm

    Helm 是 Kubernetes 的包管理器。

    命令:

    helm install my-release my-chart
    
    • 1

    解析:

    使用 Helm 安装一个名为 my-release 的 Helm Chart。

    【提醒】高级的 Kubernetes 功能如 DaemonSets、StatefulSets、Network Policies 等都有其特定的使用场景。以下是这些高级特性的一些基本解释和示例。

    1. DaemonSets

    DaemonSet 确保在每个节点上都运行一个 Pod 的副本,通常用于运行集群范围内的守护进程。

    命令:

    kubectl apply -f daemonset.yaml
    
    • 1

    解析:

    使用一个包含 DaemonSet 配置的 YAML 文件来创建 DaemonSet。

    示例 daemonset.yaml:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: my-daemonset
    spec:
      selector:
        matchLabels:
          app: my-daemonset
      template:
        metadata:
          labels:
            app: my-daemonset
        spec:
          containers:
          - name: my-daemon
            image: my-daemon-image
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2. StatefulSets

    StatefulSets 是用于管理有状态应用的工作负载 API 对象。

    命令:

    kubectl apply -f statefulset.yaml
    
    • 1

    解析:

    使用一个包含 StatefulSet 配置的 YAML 文件来创建 StatefulSet。

    示例 statefulset.yaml:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName: "nginx"
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3. Network Policies

    Network Policies 是一种 Kubernetes 资源,用于控制 Pod 之间的通信。

    命令:

    kubectl apply -f network-policy.yaml
    
    • 1

    解析:

    使用一个包含 Network Policy 配置的 YAML 文件来创建 Network Policy。

    示例 network-policy.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default-deny
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这个示例定义了一个拒绝所有进入(Ingress)流量的 Network Policy。

    以上仅为各个高级功能的基础示例。它们都有更多高级和复杂的用法,建议查阅官方文档以获得详细和全面的指导。

  • 相关阅读:
    linux服务器slab缓存回收方案设计
    题目 1067: 二级C语言-分段函数 sqrt、fabs、pow
    千亿母婴辅食赛道崛起,建立和完善行业标准迫在眉睫
    怎么设置IP白名单
    温振一体化变送器优势
    高效的C++(一)
    mysql-MVCC
    抖音大火的AI虚拟人,画的猫为啥这么丑?
    在R中通过正则化表达式提取向量中的正负数
    VS2010 Windows API 串口编程 (二)
  • 原文地址:https://blog.csdn.net/m0_57021623/article/details/132958782