二进制部署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中文文档

二进制部署K8S-1基本概念的更多相关文章

  1. 二进制部署k8s

    一.二进制部署 k8s集群 1)参考文章 博客: https://blog.qikqiak.com 文章: https://www.qikqiak.com/post/manual-install-hi ...

  2. 【原】二进制部署 k8s 1.18.3

    二进制部署 k8s 1.18.3 1.相关前置信息 1.1 版本信息 kube_version: v1.18.3 etcd_version: v3.4.9 flannel: v0.12.0 cored ...

  3. 第十四章 二进制部署k8s集群的平滑升级

    1.软件包下载 去github上下载较新的Kubernetes软件包https://github.com/ 2.升级说明 升级包括master节点升级和node节点的升级,本章升级至v1.15.12: ...

  4. kubernetes二进制部署k8s-master集群controller-manager服务unhealthy问题

    一.问题现象 我们使用二进制部署k8s的高可用集群时,在部署多master时,kube-controller-manager服务提示Unhealthy [root@ceph-01 system]# k ...

  5. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  6. 03 . 二进制部署kubernetes1.18.4

    简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...

  7. 基于containerd二进制部署k8s-v1.23.3

    文章目录 前言 k8s 组件 环境准备 创建目录 关闭防火墙 关闭selinux 关闭swap 开启内核模块 分发到所有节点 启用systemd自动加载模块服务 配置系统参数 分发到所有节点 加载系统 ...

  8. 5.基于二进制部署kubernetes(k8s)集群

    1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...

  9. K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群

    0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...

随机推荐

  1. AOE网与关键路径

    声明:图片及内容基于https://www.bilibili.com/video/BV1BZ4y1T7Yx?from=articleDetail 原理 AOE网 关键路径 数据结构 核心代码 Topo ...

  2. 201871010129-郑文潇 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...

  3. Spring(六)SpringMVC的数据响应

    SpringMVC的请求和响应 SpringMVC的数据响应 01-SpringMVC的数据响应-数据响应方式(理解) 1)    页面跳转 直接返回字符串 通过ModelAndView对象返回 2) ...

  4. 浅谈 Fresco 框架结构

    在前面的文章 Fresco 源码分析 -- 图片加载流程 里面详细说明了图片加载的整个流程,但是除了理解源码之外,对于源码的框架层面的设计也是需要去了解的,不能只是简单的读源码,好的源码的框架设计也是 ...

  5. 报错:Method definition shorthands are not supported by current JavaScript version

    当你在html中使用调用js中的方法时,会出现这行报错: method definition shorthands are not supported by current JavaScript ve ...

  6. React/Vue里的key到底有什么用?看完这篇你就知道了!(附demo代码)

    网上有很多博客讲到,React.Vue里的key,与 Virtual DOM 及 DOM diff 有关, 可以用来唯一标识DOM节点,提高diff效率,云云. 这大致是对的,但是,大多讲得语焉不详, ...

  7. 大话数据结构.epub

    电子书资源:大话数据结构 书籍简介   本书为超级畅销书<大话设计模式>作者程杰潜心三年推出的扛鼎之作!通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体 ...

  8. JDBC_15_悲观锁和乐观锁

    悲观锁和乐观锁 并发控制 当程序中可能出现并发操作的情况时,就需要保证在并发操作的情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和某个用户单独操作时的结果是一样的.这种手段就叫 ...

  9. 记一次 .NET WPF布草管理系统 挂死分析

    一:背景 1. 讲故事 这几天看的 dump 有点多,有点伤神伤脑,晚上做梦都是dump,今天早上头晕晕的到公司就听到背后同事抱怨他负责的WPF程序挂死了,然后测试的小姑娘也跟着抱怨...嗨,也不知道 ...

  10. 记一次 .NET医疗布草API程序 内存暴涨分析

    一:背景 1. 讲故事 我在年前写过一篇关于CPU爆高的分析文章 再记一次 应用服务器 CPU 暴高事故分析 ,当时是给同济做项目升级,看过那篇文章的朋友应该知道,最后的结论是运维人员错误的将 IIS ...