部署首个(无状态)应用

Kubernetes 入门

Frank Heilmann

Platform Architect and Freelance Instructor

更多关于 "kubectl"

  • kubectl:与 Kubernetes 对象交互的主命令
  • 对象如 podservice

$$

  • 常用模式:

    • kubectl create -f <Manifest.yml>:创建新对象,-f 表示"文件名"
    • kubectl apply -f <Manifest.yml>:创建新对象并变更对象状态
    • kubectl get <object>: 查看已部署对象概览
    • kubectl describe <object>:查看对象详细信息

    $$

  • 可通过命令行选项 --help 获取详细帮助

Kubernetes 入门

更多关于 Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.4
        ports:
        - containerPort: 80
  • 请记住:Manifest 是声明式
  • 通常为 YAML,也可为 JSON 格式
  • 两个重要部分:
    • metadata:对象/资源的关键信息
    • spec:定义对象/资源的规格或期望状态
  • 具体内容可很深,取决于要部署的资源
Kubernetes 入门

无状态应用

  • 无状态应用:

    • 一般概念
    • 非 Kubernetes 独有
    • 不保存内部状态或处理上下文
  • 中断后会重建新副本并继续运行。

  • 示例:
    • 查询数据库后端的数据库前端
    • 查询全文索引的搜索应用
    • 将物联网传感器的温度读数从 °F 转为 °C 的数据流应用
Kubernetes 入门

Kubernetes Deployments

  • "无状态应用"对应于 "Kubernetes Deployment"
  • 示例 Manifest 包含:
    • apiVersionkind
    • metadataspec
  • spec 定义 replicas 数量、selectortemplate
  • selector 稍后介绍
  • template 描述在 Deployment 中创建 Pod 的细节
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Kubernetes 入门

部署到 Kubernetes 集群

  • 使用 kubectl apply -f <manifest.yml> 创建 Pod 并应用变更。
  • Kubernetes 控制平面会将 Deployment 调度到节点上。
    • 然后在节点上触发创建 Pod。
  • 每个 Pod 会获得唯一但随机(不可预测)的标识;每个 Pod 都"等价可替换"
Kubernetes 入门

¡Vamos a practicar!

Kubernetes 入门

Preparing Video For Download...