二进制部署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里特定”资源“要带上相应的名称空间。
- 删除一个namespace会自动删除所有属于该namespace的资源。
- default和kube-system命名空间不可删除。
- PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的。
- 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基本概念的更多相关文章
- 二进制部署k8s
一.二进制部署 k8s集群 1)参考文章 博客: https://blog.qikqiak.com 文章: https://www.qikqiak.com/post/manual-install-hi ...
- 【原】二进制部署 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 ...
- 第十四章 二进制部署k8s集群的平滑升级
1.软件包下载 去github上下载较新的Kubernetes软件包https://github.com/ 2.升级说明 升级包括master节点升级和node节点的升级,本章升级至v1.15.12: ...
- kubernetes二进制部署k8s-master集群controller-manager服务unhealthy问题
一.问题现象 我们使用二进制部署k8s的高可用集群时,在部署多master时,kube-controller-manager服务提示Unhealthy [root@ceph-01 system]# k ...
- Ansible自动化部署K8S集群
Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...
- 03 . 二进制部署kubernetes1.18.4
简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...
- 基于containerd二进制部署k8s-v1.23.3
文章目录 前言 k8s 组件 环境准备 创建目录 关闭防火墙 关闭selinux 关闭swap 开启内核模块 分发到所有节点 启用systemd自动加载模块服务 配置系统参数 分发到所有节点 加载系统 ...
- 5.基于二进制部署kubernetes(k8s)集群
1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...
- K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群
0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...
随机推荐
- C# WebView2 在你的应用中使用Chromium内核
什么是WebView2? Win10上对标Edge浏览器 Chromium内核 简单的可视为WebBrowser组件的升级版 如何使用WebView2? 官网下载 WebView2 RunTime V ...
- 翻译:《实用的Python编程》09_02_Third_party
目录 | 上一节 (9.1 包) | 下一节 (9.3 版本分发) 9.2 第三方模块 Python 拥有一个包含各种内置模块的大型库(自带电池(batteries included))(译注:&qu ...
- 自学PHP笔记(五) PHP运算符
本文转发来自:自学PHP笔记(五) PHP运算符 首先我们需要了解运算符是什么,运算符是指的对变量.常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这 ...
- 八戒转世投胎竟然是Java设计模式:桥接模式
目录 示例 代码实例 桥接模式 定义 意图 主要解决问题 何时使用 优缺点 八戒转世投胎的故事 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1.比如有 ...
- 多图详解 TCP 连接管理,太全了!!!
TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...
- Erda MSP 系列 - 以服务观测为中心的 APM 系统设计:开篇词
本文首发于 Erda 技术团队知乎账号,更多技术文章可点击 Erda 技术团队 作者:刘浩杨,端点科技 PaaS 技术专家,微服务治理和监控平台负责人,Apache SkyWalking PMC成员 ...
- 【Springboot项目启动异常】项目启动,数据库连接异常
今天使用Springboot 整合 MybatisPlus 准备写一个Demo,在项目启动时,频繁出错,在此记录整个问题的解决过程 问题如下图 人工翻译一遍,主要意思就是没有检测到数据库驱动,也就是说 ...
- POJ2118基础矩阵快速幂
题意: an=Σ1<=i<=kan-ibi mod 10 000 for n >= k,题意看了好久才懂,有点蛋疼啊, 这个题目要是能看懂题意就简单了,先给你k,然后给 ...
- UVA11520填充正方形
题意: 给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n ...
- 汇编环境搭建(vs2010(2012)+masm32)
我本地使用的环境VS2012(2010)+MASM32,下面的图是在网上找的几个博客拼在一起的,用的是vs2010,但是并不影响.(所有文件我都打包好了,如果懒的话可以直接下载这个包)地址是:http ...