Kubernetes学习大纲

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

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

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

命令:

kubectl get nodes

解析:

列出集群中所有的节点。

2. Pod

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

命令:

kubectl run nginx --image=nginx
kubectl get pods

解析:

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

3. Service

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

命令:

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

解析:

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

4. Deployment

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

命令:

kubectl create deployment nginx-deploy --image=nginx
kubectl get deployments

解析:

  • 创建一个名为 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

解析:

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

6. 命名空间(Namespaces)

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

命令:

kubectl create namespace my-namespace

解析:

创建一个新的命名空间。

7. Volume

用于持久化存储。

命令:

kubectl apply -f my-volume.yaml

解析:

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

8. Horizontal Pod Autoscaler (HPA)

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

命令:

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

解析:

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

9. 自定义资源(CRDs)

用于扩展 Kubernetes API。

命令:

kubectl apply -f my-custom-resource.yaml

解析:

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

10. Helm

Helm 是 Kubernetes 的包管理器。

命令:

helm install my-release my-chart

解析:

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

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

1. DaemonSets

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

命令:

kubectl apply -f daemonset.yaml

解析:

使用一个包含 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

2. StatefulSets

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

命令:

kubectl apply -f statefulset.yaml

解析:

使用一个包含 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

3. Network Policies

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

命令:

kubectl apply -f network-policy.yaml

解析:

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

示例 network-policy.yaml:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress

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

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

你可能感兴趣的:(运维,kubernetes,学习,容器)