Skip to content

Latest commit

 

History

History
154 lines (129 loc) · 3.68 KB

2.md

File metadata and controls

154 lines (129 loc) · 3.68 KB

理解对象

apiVersion: apps/v1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    selector:
        matchLabels:
            app: nginx
    replicas: 2 # 告知运行2个与该模板匹配的Pod
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx
              images: nginx:1.14.2
              ports:
              - containerPort: 80

必须字段

  • apiVersion 版本
  • kind 类别
  • metadata 标识
  • spec 期望的对象状态

对象管理

指令式命令

开始或者在集群中运行一次性任务的推荐方法。因为这个技术直接在活跃对象上操作,所以它不提供以前配置的历史记录

kubectl create deployment nginx --image nginx

指令式对象配置

创建配置文件中定义的对象

kubectl create -f nginx.yaml

删除两个配置文件中定义的对象

kubectl delete -f nginx.yaml -f redis.yaml

通过覆盖活动配置来更新配置文件中定义的对象

kubectl replace -f nginx.yaml

声明式对象配置(这个最重要)

处理configs目录中的所有对象配置文件,创建并更新活跃对象。可以首先使用diff子命令查看将要进行的更改,然后再进行应用

kubectl diff -f configs/
kubectl apply -f configs/

递归处理目录

kubectl diff -R -f congigs/
kubectl apply -R -f configs/

对象名称和ID

集群中的每个对象都有一个名称来标识在同类资源中的唯一性,UID是系统生成的

标签和选择算符(重点)

标签(Lables)是附加到kubernetes对象(比如Pod)上的键值对。每个对象都可以定义一组键值标签

"metadata":{
    "lables":{
        "key1":"value1",
        "key2":"value2"
    }
}

标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的。应该使用注解记录非识别信息

标签选择算符

与名称和UID不同,标签不支持唯一性

通过标签选择算符,客户端/用户可以识别一组对象。

kubectl get pods -l environment=production,tier=frontend

命名空间(Namespace)

注解

你可以使用 Kubernetes 注解为对象附加任意的非标识的元数据。客户端程序(例如工具和库)能够获取这些元数据信息。

"metadata": {
  "annotations": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

Map 中的键和值必须是字符串。 换句话说,你不能使用数字、布尔值、列表或其他类型的键或值。

apiVersion: v1
kind: Pod
metadata:
  name: annotations-demo
  annotations:
    imageregistry: "https://hub.docker.com/" # 注解
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

字段筛选器

  • metadata.name=my-service
  • metadata.namespace!=default
  • status.phase=Pending

Finalizers

Finalizer 是带有命名空间的键,告诉 Kubernetes 等到特定的条件被满足后, 再完全删除被标记为删除的资源。 Finalizer 提醒控制器清理被删除的对象拥有的资源。

推荐使用的标签

标签

# 这是一段节选
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    # 应用程序的名称
    app.kubernetes.io/name: mysql
    # 用于唯一确定应用实例的名称
    app.kubernetes.io/instance: mysql-abcxzy
    # 应用程序的当前版本
    app.kubernetes.io/version: "5.7.21"
    # 架构中的组件
    app.kubernetes.io/component: database
    # 此级别的更高级别应用程序的名称
    app.kubernetes.io/part-of: wordpress
    # 用于管理应用程序的工具
    app.kubernetes.io/managed-by: helm