强调下:

1)k8s的yaml文件中'kind'对应的字段值是'大驼峰' --> 也即都是'首字母大写'

2)其它字段是'小驼峰'

一    补充知识

请求资源的'url路径'是'如何堆叠的'

具体解释

name是 kubectl 去'查询资源'名字的'全称'

二    控制器

(1)控制器的工作原理

(2)ReplicaSet

1)rs的引出

2)案例讲解

目的: '观察实验现象,了解原理'

apiVersion: apps/v1
kind: ReplicaSet  
metadata:
  name:  nginx-rs
  namespace: default
spec:
  replicas: 3  '期望的 Pod 副本数量',默认值为1
  selector:    'Label Selector',必须匹配 Pod 模板中的标签
    matchLabels:
      app: nginx
  template:  # Pod 模板
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

三个字段理解

replias: 表示'期望'的 Pod 的'副本数量'
selector:Label Selector,用来匹配要控制的 Pod 标签,需要和下面的 Pod 模板中的'标签一致'
template:Pod 模板,实际上就是'以前'我们定义的 Pod 内容,相当于把一个 Pod 的描述以'模板的形式嵌入到了 ReplicaSet 中来'

核心:根据pod的模板-->'template',创建指定数量的pod-->'replicas'

理解: rs'通过标签'来控制pod  -->  可以通过'删除rs中pod的标签'或者'增加一个带相同标签的pod','观察'rs中控制的pod

实验1

'手动删除'rs创建的一个pod --> '现象' --> 然后'又自动创建'一个pod

背后机理: 'rs控制器'控制pod的数量 -->实验'过程省略'

思考:单一podrs中的pod的区别

Pod 中有一个 metadata.ownerReferences 的字段'指向了' ReplicaSet 资源对象

结构图

rc了解即可,'基本不用'

(3)Deployment  控制器

明确:'不直接使用'rs,并不意味着'不使用'rs

备注:跟ep一样'endpoints'一样

1)实例模板

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  nginx-deploy
  namespace: default
spec:
  replicas: 3   '期望'的 Pod 副本数量,'默认值为1'
  selector:     Label Selector,'必须匹配' Pod 模板中的标签
    matchLabels:
      app: nginx
  template:  # Pod 模板
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

2)思考:创建deployment,为什么会创建rs,二者之间的关系?

对比: 'deployment和rs'对应'describle Event'的信息帮助我们'理解'deployment是通过'控制rs'来控制pod的

看rs的yaml信息字段'ownerReferences'也能表明该rs'属于deploy管理的'

3)水平扩缩容

Deployment 是通过管理 'ReplicaSet 的数量和属性'来实现水平'扩展'/'收缩'以及'滚动更新'两个功能的

理解1: 'dp的这两个功能'实质都是'通过rs来实现的',只不过业务上'滚动更新用的更多',所以更重要!!!

理解2: 水平扩缩容-->是扩展或者缩小'同一批次pod'的数量

理解3: 滚动更新产生的'不同批次'的pod --> '一般以镜像为修改参数'
看到'期望的 Pod 数量'已经变成 4 了,只是 Pod '还没准备完成',所以 READY '状态数量'还是 3

看到 ReplicaSet 控制器'增加了'一个新的 Pod,同样的 Deployment 资源对象的事件中也可以看到'完成了扩容的操作'

备注1: '缩容'同上

备注2: Events保存最近'一个小时'的记录

 

 

Logo

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

更多推荐