zoukankan      html  css  js  c++  java
  • k8s(1):快速入门

    Kubernetes 优势:

    1. 自动装箱,水平扩展,自我修复
    2. 服务发现和负载均衡
    3. 自动发布(默认滚动发布模式)和回滚
    4. 集中化配置管理和密钥管理
    5. 存储编排
    6. 任务批量运行

    k8s四组基本概念:

    • Pod/Pod控制器
    • Name/Namespace
    • Label/Label选择器
    • Service/Ingress

    Pod :

    1、Pod 是K8S里能够被运行的最小逻辑单元(原子单元) 

    2、1个Pod中可以运行多个容器,它们共享 UTS + NET + IPC 名称空间

    3、一个POD可以运行多个容器,又叫:边车(SideCar)模式

    Pod控制器:

    Pod控制器是Pod启动的一种模板,用来保证K8S里启动的POD始终按照人们预期运行(副本数、生命周期、健康状态检查等);

    K8S提供了众多的POD控制器,常用的有以下几种:

    • Deployment
    • DaemonSet
    • ReplicaSet
    • StatefulSet
    • Job
    • Cronjob

    Name:

    1、由于K8S内部,使用“资源”来定义每一种逻辑概念(功能),故每种“资源”,都应该有自己的“名称”;

    2、“资源”有:api版本(apiVersion),类别(kind),元数据(metadata),定义清单(spec),状态(status)等配置信息;

    3、“名称”通常定义在“资源”的“元数据”信息里。

    Namespace:

    1、随着项目、人员的增多和集群规模的扩大,需要一种能够隔离K8S内各种“资源”的方法,这就是名称空间;

    2、名称空间可以理解为K8S内部的虚拟集群组;

    3、不同名称空间内的“资源”,名称可以相同,相同名称空间内的同种“资源”,“名称”不能相同;

    4、合理的使用K8S名称空间,使得集群管理员能够更好的对交付到k8S里的服务进行分类管理和浏览;

    5、K8S里默认的名称空间有: default、kube-system、kube-public;

    6、查询K8S里特定“资源”要带上相应的名称空间。

    Lable:

    1、标签是K8S特色的管理方式,便于分类管理资源对象;

    2、一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系;

    3、一个资源拥有多个标签,可以实现不同维度的管理;

    4、标签的组成:key=value

    5、与标签类似,还有一种“注释”(annotation)

    Lable选择器:

    1、给资源打卡标签后,可以使用标签选择器过滤指定的标签;

    2、标签选择器目前有两个:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在);

    3、许多资源支持内嵌标签选择器字段:

      matchLables

      matchExpressions

    Service:

    1、在K8S的世界里,虽然每个POD都会分配一个单独的IP地址,但这个IP地址会随着POD的销毁而消失;

    2、Service(服务)就是用来解决这个问题的核心概念;

    3、一个Service可以看作一组提供相同服务的POD的对外访问接口;

    4、Service 作用于哪些POD是通过标签选择器来定义的。

    Ingress:

    1、Ingress是K8S 集群里工作在OSI网络模型下,第7层的应用,对外暴露的接口;

    2、Service只能进行L4流量调度,表现形式是 ip + port;

    3、Ingress 则可以调度不同业务域、不同URL访问路径的业务流量。

    核心组件

    核心组件包括:

    配置存储中心 -> etcd 服务;

    主控(master)节点;

    • kube-apiserver 服务
    • kube-controller-manager 服务
    • kube-scheduler 服务

    运算(node)节点:

    • kube-kubelet 服务
    • kube-proxy 服务

    apiserver 服务的作用:

    1、提供了集群管理的REST API接口(包括鉴权、数据校验及集群状态变更);

    2、负责其他模块之间的数据交互,承担通信枢纽功能;

    3、资源配额的入口;

    4、提供完备的集群安全机制。

    controller-manager服务:由一系列控制器组成,通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态;包括有:Node Controller,Deployment  Controller,Service Controller, Volume Controller, Endpoint  Controller,Garbage Controller, Namespace Controller, Job Controller, Resource quta  Controller 等。

    scheduler 服务:主要功能是接收调度pod适合的运算节点上;预算策略(predict); 优先策略(priorities) 

    kubelet 服务:

      1、简单来说,kubelet 的主要功能就是定时从某个地方获取节点上POD的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态;

      2、定时汇报当前结点的状态给 apiserver,以供调度的时候使用;

      3、镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源。

    kube-proxy 服务:

      1、是K8S在每个节点上运行网络的代理,service资源的载体;

      2、建立了POD网络和集群网络的关系(cluster ip -> pod ip);

      3、常用三种流量调度模式:Userspace(废弃)、 Iptables(濒临废弃)、 Ipvs(推荐);

      4、负责建立和删除包括更新调度规则、通知 apiserver 自己的更新、或者从 apiserver 那里获取其它 kube-proxy 的调度规则变化来更新自己。

    k8s 三条网络示意图:

    节点网络就是运算节点宿主机网络;所有的pod网络都是从宿主机上 NAT 出来的;kube-proxy 把 pod 网络和 service 网络连接了起来,注意:service 网络是一个虚的网络

    k8s 逻辑架构图:

     

    CLI客户端

    k8s的客户端为 kubectl

    核心附件

    核心附件包括:

    CNI网络插件 -> flannel/calico

    服务发现插件 -> coredns

    服务暴露插件 -> traefik

    GUI管理插件 -> Dashboard

    Code your future.
  • 相关阅读:
    fiddler 使用
    IO多路复用
    scrapy下载 大文件处理

    session见解
    自定义分页
    COOKIE
    ORM之老师管理
    ORM之学生管理
    ORM之班级管理
  • 原文地址:https://www.cnblogs.com/neozheng/p/15291462.html
Copyright © 2011-2022 走看看