zoukankan      html  css  js  c++  java
  • 一. k8s基本概念

    k8s master/node节点组件

    master

    • API server

      • 提供集群管理的 RESTFUL API 接口,包括认证授权、数据校验以及集群状态变更等
      • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)
    • Scheduler

      • kube-scheduler 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)。
    • Controller-Manager

      • Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成,是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。

    Lable

    Label

    Label是Kubernetes系统中的一个核心概念。Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node,RC(ReplicationController)/RS(ReplicaSet)等。Label可以在创建对象时就附加到对象上,也可以在对象创建后通过API进行额外添加或修改。

    apiVersion: v1
    kind: Pod
    metadata:            #通常使用metadata.labels字段,来为对象添加Label。Label可以为多个。
    name: nginx
    labels:            #名为nginx的Pod添加了两个Label,分别为app: nginx和release: stable。
     app: nginx       #app:nginx
     release: stable  #release:stable
    spec:
     containers:
      - name: nginx
     image: nginx
     ports:
        - containerPort: 80
    

    Label Selector

    • 通常我们通过描述文件中的spec.selector字段来指定Label,从而Kubernetes寻找到所有包含你指定Label的对象,进行管理。
    • Kubernetes目前支持两种类型的Label Selector:
      • 基于等式的Selector(Equality-based)

        • app=nginx 选择所有Label中key为app,value为nginx的对象。
        • env!=dev 选择所有Label中key为env,value不等于dev的对象。
      • 基于集合的Selector(Set-based)

        • name in (redis-master, redis-slave) 选择所有Label中key为name,并且value为redis-master或redis-slave的对象。
        • env not in (dev) 选择所有Label中key为env,并且value不为dev的对象。
      • Label是自定义的一些key/value对,你可以随心所欲的设置。

    使用Label可以给对象创建一组或多组标签,ServiceRC/RS等组件则通过Label Selector来定位需要管理的对象,Label和Label Selector共同构成了Kubernetes系统中最核心的应用模型,使得对象能够精细分组,同时实现了集群的高可用性。

    Pod

    自主式pod

    1. 直接kubectl run启动
    2. 自主式pod在非正常结束的情况下无法自动重新启动一个新的Pod

    控制管理器管理的pod

    • ReplicationController

      RC保证了在所有时间内,都有特定数量的Pod副本正在运行,如果太多了,RC就杀死几个,如果太少了,RC会新建几个

    • ReplicaSet

      ReplicaSet是下一代复本控制器。ReplicaSet和 Replication Controller之间的唯一区别是现在的选择器支持。Replication Controller只支持基于等式的selector(env=dev或environment!=qa),但ReplicaSet还支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa))。在试用时官方推荐ReplicaSet。

      大多数kubectl支持Replication Controller的命令也支持ReplicaSets。rolling-update命令有一个例外 。如果您想要滚动更新功能,请考虑使用Deployments。此外, rolling-update命令是必须的,而Deployments是声明式的,因此我们建议通过rollout命令使用Deployments。

      虽然ReplicaSets可以独立使用,但是今天它主要被 Deployments 作为协调pod创建,删除和更新的机制。当您使用Deployments时,您不必担心管理他们创建的ReplicaSets。Deployments拥有并管理其ReplicaSets。

    • Deployment

      特点:

      • 定义Deployment来创建Pod和ReplicaSet
      • 滚动升级和回滚应用
      • 扩容和缩容
      • 暂停和继续Deployment

      扩容:

      kubectl scale deployment nginx-deployment --replicas 10
      

      如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展:

      kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80
      

      更新镜像也比较简单:

      kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
      

      回滚:

      kubectl rollout undo deployment/nginx-deployment
      

      Deployment为Pod和Replica Set提供声明式更新。

      你只需要在Deployment中描述你想要的目标状态是什么,Deployment controller就会帮你将Pod和Replica Set的实际状态改变到你的目标状态。你可以定义一个全新的Deployment,也可以创建一个新的替换旧的Deployment。

      一个典型的用例如下:

      • 使用Deployment来创建ReplicaSet。ReplicaSet在后台创建pod。检查启动状态,看它是成功还是失败。
      • 然后,通过更新 DeploymentPod.Template.Spec 字段来声明Pod的新状态。这会创建一个新的ReplicaSet,Deployment会按照控制的速率将pod从旧的ReplicaSet移动到新的ReplicaSet中。
      • 如果当前状态不稳定,回滚到之前的Deployment revision。每次回滚都会更新Deployment的revision。
      • 扩容Deployment以满足更高的负载。
      • 暂停Deployment来应用 Pod.Template.Spec 的多个修复,然后恢复上线。
      • 根据Deployment 的状态判断上线是否hang住了。
      • 清除旧的不必要的ReplicaSet。
    • StatefulSet

      管理有状态应用

    • DaemonSet

      用于确保集群中的每一个节点只运行特定的pod副本,通常用于实现系统级后台任务。比如ELK服务

    • Job

      只要完成就立即退出,不需要重启或重建。

    • Cronjob

      周期性任务控制,不需要持续后台运行

    小贴士

    service识别后端pod主要通过lable
    每创建一个service都相当于创建一个ipvs nat模型的规则

    后续需要继续了解的问题

    日志收集、监控和集群的备份

    参考链接: https://www.kubernetes.org.cn/docs

  • 相关阅读:
    6.BLE---数据传输
    5.BLE---报文
    4.BLE---广播信道防冲突与数据信道选择
    3.BLE---信道与功率
    Ubuntu 安装exe 软件
    Zephyr ubuntu 环境搭建
    ES6语法(一)let 和 const 命令
    Vue(二十三)vuex + axios + 缓存 运用 (以登陆功能为例)
    Vue(二十二)vuex小案例(官网计数案例整合)
    Vue(二十一)使用express模拟接口数据
  • 原文地址:https://www.cnblogs.com/peitianwang/p/11387743.html
Copyright © 2011-2022 走看看