kubernetes--组件介绍和网络方式

发布于:2023-01-13 ⋅ 阅读:(378) ⋅ 点赞:(0)

目录

1.k8s可以做到

2.k8s的组件有哪些

一,控制平面组件

(1)master组件

(2)worker Node 组件

二.控制器:

3.k8s网络方式

k8s的核心概念


1.k8s可以做到

1.服务发现和负载均衡

Kubernetes 可以使用 DNS 名称或自己的 IP 地址来曝露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

2.存储编排

Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

3.自动部署和回滚

你可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。

4.自动完成装箱计算

基于容器对应用运行环境的资源配置要求自动部署应用容器

5.自修复

当容器失败时,会对容器进行重启

当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务

6.密钥与配置管理

Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

7.水平扩展

通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大

或规模剪裁

2.k8s的组件有哪些

master主控节点,worker工作节点,master里面有API server,controller-manager,scheduler;然后worker工作节点里面有kubelet和kube-proxy

一,控制平面组件

实现k8s控制功能的软件,控制平面组件有很多个软件,控制组件相当于管理层,会为集群做出全局决策,比如资源调度,管理,控制...

控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。 

(1)master组件

apiserver

所有服务访问统一入口, 该组件负责公开了 Kubernetes API

scheduler

做节点调度,负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。

controller-manager

维护副本期望数

核心控制组件,是控制平面的组件, 负责运行控制器进程。去处理集群中常规的统一控制器

etcd

兼顾一致性与高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。

cloud-controller-manager

允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。

(2)worker Node 组件

kubelet

master派到worker里面收集数据的

 会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod 中。确保容器处于运行状态且健康。 kubelet 不会管理不是由 Kubernetes 创建的容器。

kube-proxy

是集群中每个节点(node)所上运行的网络代理,写入规则至IPTABLES .IPVS实现服务映射访问

docker或者其他容器应用

COREDNS:为集群中的svc创建一个域名和ip的对应关系

INGRESS CONTROLLR : 官方只能实现四层代理,ingress可以实现七层代理

PROMITHEUS:监控

ELK:集群日志统一分析

二.控制器:

replicationController(rc):来确保副本数始终保持在用户定义的副本数

replicaset(rs):有rc的全部功能,并且支持集合式selector,现都支持rs

deployments:不负责pod创建,由于rc不支持滚动更新,但deployments支持,所以建议使用deployment来自动管理rs,这样就不用担心跟其他机制不兼容的问题

HPA 根据内存和用户自定义的metric扩缩容

stategulsets :解决有状态服务的问题,稳定的持久化存储,翁丁网络标志,有序

deamonset : 确保node运行一个pod

jods: 负责只执行依次的命令

3.k8s网络方式

j假定所有的pod都在一个可以直接联通的扁平的网络空间中,k8s假定这个网络已经存在,但是如果我们要自己动手搭建一个私有云里面的k8s集群,那么里面的网络走向需要我们自己去布置实现

同一个pod里面的容器之间:通过io端口

pod之间进行通讯:overlay network

Podl 与 Pod2不在同一台主机,Pod的地址是与docker0在同一个网段的,但dockerO网段与宿主机网卡是两个完全不同的IP网段,并且不同Node之间的通信只能通过宿主机的物理网卡进行。将Pod的IP和所在Node的IP关联起来,通过这个关联让Pod可以互相访问

学习过计算机网络,可能会问,那里面的路由表在哪里?这要提到etcd。etcd存储管理flannel可分配的ip地址段资源,监控etcd中每个实际的地址,并在内存中建立维护pod节点路由表

od 与service 之间:各节点的iptables规则

Pod 至 Service 的网络:目前基于性能考虑,全部为iptables 维护和转发 Pod到外网: Pod向外网发送请求,查找路由表,转发数据包到宿主机的网卡,宿主网卡完成路由选择后,iptables执行Masquerade,把源IP更改为宿主网卡的IP,然后向外网服务器发送请求

k8s的核心概念

pod 最小部署单元,一组容器的集合,共享网络,生命周期短暂

启动pod就会起启动pause容器,容器们会共用pause的网络栈,所以里面容器不能使用同一个端口号

同一个pod共享一个网络栈,相当于本地网络,两个容器之间可以通过localhost访问

存储卷也是一样

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到