zoukankan      html  css  js  c++  java
  • 二进制部署K8S-1基本概念

    二进制部署K8S-1基本概念

    感谢老男孩教育王导的公开视频,文档整理自https://www.yuque.com/duduniao/k8s。

    1.实验环境

    1.1 虚拟机

    因为在后期运行容器需要有大量的物理硬件资源使用的环境是用的Wmware EXSI如果使用笔记本可适当调整虚拟机配置。

    角色 主机名 IP CPU Mem OS
    (主)负载均衡、内网DNS hdss7-11.host.com 10.4.7.11 4C 4G CentOS Linux release 7.8
    (备)负载均衡、内网DNS hdss7-12.host.com 10.4.7.12 4C 4G CentOS Linux release 7.8
    k8s master、k8s node、etcd hdss7-21.host.com 10.4.7.21 4C 8G CentOS Linux release 7.8
    k8s master、k8s node、etcd hdss7-22.host.com 10.4.7.22 4C 8G CentOS Linux release 7.8
    harbor私有仓库、nfs hdss7-200.host.com 10.4.7.200 4C 4G CentOS Linux release 7.8

    1.2 网络拓扑

    • Service 网络是虚拟网络,主要提供ClusterIP
    • Pod网络提供给创建的pod
    • 物理网络主要连接到每个虚拟机各个组件之间的通信。
    • Kube-proxy 连接了service网络和pod网络。

    1.3 逻辑架构

    2.docker的特点

    2.1 docker引擎的意义

    • 统一了基础设施的环境

      不管是在什么平台上面只要能安装上docker引擎就运行程序。

    • 统一了程序打包的方式。

      docker镜像,不管是java、python、nodejs.......

    • 统一了程序的启动方式。

      不管什么程序docker run

    2.2 docker容器的缺点

    • 单机使用,无法有效集群。
    • 随着容器数量的上升,管理成本上升。
    • 没有有效的容灾恢复机制。
    • 没有预设的编排模板,无法实现快速,大规模容器调度。
    • 没有统一的配置管理中心。
    • 没有容器生命周期工具。
    • 没有图形化运维工具。

    3. k8s的优势

    • 自动装箱、水平扩展,自我修复。
    • 服务器自动发现和负载均衡。
    • 自动发布(滚动式发布)和回滚。
    • 集中化配置管理和密钥管理。
    • 存储编排。
    • 任务批处理运行。

    ......

    4.k8s基本概念

    4.1 pod

    • k8s中能够被运行的最小逻辑单元(原子单元)
    • 一个pod里面可以运行多个容器,他们共享UTS+NET+IPC名称空间。
    • 可以把pod理解位豌豆荚,一个容器理解为豌豆。
    • 一个pod里面运行多个容器,又叫边车模式(sideCar)。

    4.2 pod 控制器

    • pod控制器是pod启动的一种模板,用来保证在k8s里启动的pod应始终按照人们预期运行(副本数、生命周期、健康状态检查。。。)
    • k8s中提供了多种控制器,常用的有:
      • Deployment
      • DaemonSet
      • ReplicaSet
      • Job
      • Cronjob

    4.3 Name

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

    “资源”

    • api版本 ---- apiVersion
    • 类别 ---- kind
    • 元数据 ---- metadata
    • 定义清单 ---- spec
    • 状态 ---- status

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

    4.4 Namespace

    • 随着项目的增多、人员增加、集群规模的扩大,需要一种能够隔离k8s内部“资源”的方法,就是名称空间。
    • 名称空间可以理解为k8s内部的虚拟集群组。
    • 不同名称空间的“资源”,名称可以相同,相同名称空间内的同种“资源”,“名称“不能相同。
    • 合理的使用k8s的名称空间,使得集群管理员能够更好的对交付到k8s里的服务进行分类管理和浏览。
    • k8s里默认存在的名称空间有default、kube-system、kube-public
    • 查询k8s里特定”资源“要带上相应的名称空间。
    1. 删除一个namespace会自动删除所有属于该namespace的资源。
    2. default和kube-system命名空间不可删除。
    3. PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的。
    4. Events是否属于namespace取决于产生events的对象。

    4.5 Label

    • 标签是k8s特色的管理方式,便于分类管理资源对象。
    • 一个标签可以对应对个资源,一个资源可以有多个标签,他们是多对多的关系。
    • 一个资源拥有多个标签,可以实现不同维度的管理。
    • 标签的组成:key=value
    • 与标签类似的,还有一种”注释“(annotations)

    4.6 Label选择器

    • 给资源打上标签后,可以使用标签选择器过滤指定的标签。
    • 标签选择器目前有两个:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在)
    • 许多资源支持内嵌标签先择器字段。
      • matchLables
      • matchExpressions

    4.7 Service

    • 在k8s的世界里虽然每一个pod会被分配一个IP地址,但这个IP地址会随着Pod的销毁而消失。
    • Service(服务)就是用来解决这个问题的核心概念。
    • 一个Service可以看做是一组提供相同服务的Pod的对外访问接口。
    • Service作用于哪些Pod是通过标签选择器定义的。

    4.8 Ingress

    • Ingress是k8s集群里工作在OSI网络参考模型下,第七层的应用,对外暴露的端口。比如http
    • Service只能进行L4(OSI的第四层)流量调度,表现形式是ip+port
    • Ingress则可以调度不同业务域、不同URl访问路径的业务流量。

    5. 核心组件

    5.1 配置存储中心----etcd服务

    5.2 主控master节点:

    kube-apiserver服务

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

    负责其它模块之间的数据交互,承担通信枢纽功能。

    是资源配额控制的入口。

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

    kube-controller-manager服务

    由一系列控制器组成通过api-server监控整个集群的状态,并确保集群处于预期的工作状态。

    kube-scheduler服务

    接收调度pod到适合的节点上。

    预算策略

    优选策略

    5.3 运算node节点:

    kube-kubelet服务

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

    定时汇报当前节点的状态给api-server以供调度的时候使用。

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

    kube-proxy

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

    建立了pod网络和集群网络的关系(clusterIP---podip)

    常用三种流量调度模式:

    ​ userspace

    ​ iptables

    ​ ipvs

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

    CLI客户端

    • kubectl

    5.4 核心附件:

    • CNI网络插件 ---》flannel/calico
    • 服务发现用插件---》coredns
    • 服务暴露用插件---》traefik
    • GUI管理插件---》Dashboard

    K8S中文文档

  • 相关阅读:
    MyBatis操作数据库(基本增删改查)
    CSS和jQuery分别实现图片无缝滚动效果
    jQuery学习
    ORACLE PL、SQL编程
    JavaScript_DOM详解
    JavaScript_DOM(文件对象模型)
    JavaScript 基础
    用javascript编写猜拳游戏(函数)
    用javascript编写简单银行取钱存钱流程(函数)
    用Java编写银行存钱取钱
  • 原文地址:https://www.cnblogs.com/gshelldon/p/14720894.html
Copyright © 2011-2022 走看看