IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 第2章:Kubernetes基础概念 -> 正文阅读

[系统运维]第2章:Kubernetes基础概念

Master/Node
Master::API-Server, Scheduler, 和 Controller-Manager(分别运行为三个守护进程)
Node:Kubelet(负责与集群的API-Server通信),docker(容器引擎,容器运行时),Kube-Proxy(负责和API-server通信,并且动态管控service)
(虽说K8s的最小逻辑运行单元是Pod,但是实际运行的还是容器。)
元数据信息之一:
Label:key=value
Label selector

Pod类型:
1,自主式pod;(自我管理),节点宕机,则pod消失;
2,控制器管理的pod,有生命周期的对象;

Pod控制器:
早期版本的控制器:ReplicationController(精确控制Pod的副本数量,多退少补;支持滚动更新和回滚)
新版控制器:ReplicaSet,声明式控制器
Deployment(管理无状态应用)
二级控制器HPA(HorizontalPodAutoscaler),水平pod自动伸缩控制器;
StatefulSet(管理有状态应用)
DaemonSet(每一个Node,只能运行一个副本)
Job(作业,如备份,清理等)
CronJob(定期周期性作业)

虽说Pod是有生命周期的,但是服务service是永久的,即是服务发现入口,将服务请求代理至后端pod;
每一组提供同类服务的pod,都有一个中间层叫做service,本质上是IPtables的DNAT规则,但是无法ping通,service的名称可以被DNS解析;
Service和后面的服务pod实例,是通过标签选择器(label selector)来进行关联;
Kubernetes v1.11版之后,IPtables规则已经改成IPVS了。负载均衡大多由IPVS承载;一个service,就会生成一个IPVS规则;
每一个Pod可以理解为一个小的虚拟机;
举例:
NMT(Nginx,Mysql,Tomcat)中的N(service)只需要开放给外部访问,M和T则不需要;
访问链路:外部调度器(如果节点没有公网地址,只有私网地址,就需要外部调度器)–>物理服务器(节点)的地址(集群可达边界)–>Nginx的service;(三次转发)
公有云(阿里云,AWS)的Load Balancer;(LBaaS)

Addons(附加组件):
DNS:CoreDNS,负责集群内部的域名解析,也是一个pod;
监控:Heapster+Grafana或者Prometheus;

K8s三层网络:
第一层:节点网络;
第二层:Service(集群)网络:(只存在于IPtables规则中,是虚拟的,假的,不能ping通)
(注:pod网络地址和service网络地址处于不同网段)
第三层:Pod网络;(可以ping通)

K8s集群内的三种通信:
1,同一个pod内的多个容器间通信:lo(本地服务器)
2,各pod之间的通信:(每一个docker主机都有一个docker0桥,docker0桥的IP地址:172.17.0.1)在同一个网段,地址不能冲突,且可以直接通信;(二层网络可以通过物理网络直接通信,客户端的pod不需要做SNAT,服务端的pod也不需要做DNAT。)
通过Overlay Network,二层或者三层叠加网络,直接转发二层报文或者通过隧道转发三层报文;
(注意:设定docker0桥只能使用某个固定子网;)
3,pod与service之间的通信;(每一个node上都要有IPtables或者IPVS规则)
如果容器访问service地址,需要先将请求送到网关(docker0桥的地址),然后根据IPtables规则查询即可;

4,Pod与集群外的客户端通信;

K8s的master主机共享存储ETCD(K8s DB),键值存储(类似redis),支持Raft协议(实现leader选举,更像ZK);
ETCD用于存储整个集群的状态信息;需要做高可用;Restful风格集群,通过Https通信;
和ElasticSearch一样(一个对内通信端口和一个对外通信端口),ETCD的端口2380,用于集群内部通信,需要一套点对点通信CA和一套签署的证书;端口2379,用于向客户端(API-server)提供服务,需要另外一套CA和一套加密证书;
API-server向客户端(每个node上的Kubelet和kube-proxy)提供服务,各需要一套CA和一套证书;
(搭建一个Kubernetes集群,至少5套CA—服务端证书,客户端证书)
三类节点:API-Server,ETCD,Node;(彼此之间通过HTTPs通信)

外部三方网络服务解决方案:至少需要解决Pod网络和service网络;
CNI,需要共享节点的网络名称空间,以容器的方式来行系统管理之实;
(CNI是一种特殊的pod,可以托管到K8s之上,作为容器运行或者作为节点上的系统级守护进程运行;)
网络策略(Network Policy),主要是为了定位名称空间之间或者名称空间里pod之间是否能够相互访问的策略;
Flannel,只是网络功能或者网络配置IP地址管理;叠加网络;
特点:简单,不支持网络策略;(CoreOS)
Calico,网络功能(IP)+网络配置(IPAM)+网络策略(Network Policy),有Calico IPIP的三层隧道网络,也有Calico BGP,使用BGP协议直接路由通信;
特点:复杂,但是支持网络策略;
Canel:Calico+Flannel;
……
K8s网络名称空间;(多租户,提供管理边界)

K8s简化安装部署工具:
GitHub K8s Ansible playbook
Kubeadm安装部署+kubelet,组件的镜像都托管在gcr.io当中;(这个地址需要科学上网技能)
Mini-kube,模拟Kubernetes环境,适用于开发人员,可以做简单的测试。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:34:54  更:2021-08-30 12:35:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:04:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码