K8S学习--Kubeadm 安装 kubernetes-1-组件简介

一:简介及规划部署

云原生生态系统:
http://dockone.io/article/3006

CNCF最新景观图:
https://landscape.cncf.io/C
在这里插入图片描述

CNCF 元原生主要框架简介:
https://www.kubernetes.org.cn/5482.html

kubernetes设计架构:
https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84

在这里插入图片描述
要实现matser的高可用,而且master的服务器在生产中比node服务节点少非常多
创建服务容器用的是yml文件来创建 yml文件给k8s发送执行命令操作

Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。

每次个节点上当然都要运行Docker。Docker来负责所有具体的映像下载和容器运行。

Kubernetes主要由以下几个核心组件组成:

etcd保存了整个集群的状态;类似于k8s的动态数据库 etcd数据库会不断的变更 采用key-value的存储格式;部署的时候也要集群。etcd这个服务不能重启

apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;6443端口暴露master地址
一般访问先到代理 让代理调度到master集群 在master主机中进行操作也会通过HA代理到master集群中调度

controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
容器的数据放在存储上的,即使容器宕机 controller manager也会重新调度到一个新的节点 重建容器 ,也支持自动pod的自动扩展 通过HPA策略监控

scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
kubernetes 是一个分布式的集群管理系统,在每个节点(node)上都要运行一个 worker 对容器进行生命周期的管理,这个 worker 程序就是 kubelet。

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

Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);

kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

除了核心组件,还有一些推荐的Add-ons:
kube-dns负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Heapster提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
Fluentd-elasticsearch提供集群日志采集、存储与查询

K8s核心优势:

1.基于 yaml 文件实现容器的自动创建、删除
2.更快速实现业务的弹性横向扩容
3. 动态发现新扩容的容器并对自动用户提供访问
4. 更简单、更快速的实现业务代码升级和回滚

K8S 规划图

在这里插入图片描述
三层网络:
宿主机网络
service 网络 :k8s内部负载均衡
POD网络

https://zhuanlan.zhihu.com/p/41071320 #参考

K8s的nodes、pods、services都有他们自己的IP。Pod封装容器化的application,运行在宿主机node上,service是pod服务的抽象;而端口配置又有containerPort(用于Pod)、hostPort(用于Pod)、port(用于Service)、targetPort(用于Service)、nodePort(用于Service)。下面简单说一下这几种IP和Port:

1,node IP(也就是hostIP)就是每个物理机或者VM上有默认路由的Iface上的IP;可访问性就等同于该物理机的可访问性;

2,pod IP是K8s的最小单元Pod的IP,来自于创建cluster时候kubeadm的–pod-network-cidr参数设定的CIDR;

3,service IP(CLUSTER IP)来自于-service-cluster-ip-range指定的CIDR,默认值是10.0.0.0/24;

POD:
pod是k8s的最小单元,容器包含在pod中,一个pod中有一个pause容器和若干个业务容器,而容器就是单独的一个容器,简而言之,pod是一组容器,而容器单指一个容器。

在k8s中运行容器的最小单元
k8s如果下替换CRI的话。替换容器技术。只需要将pod使用相关的容器技术封装即可
service:人工指定后端的pod 属于K8S内部的负载均衡 转发到相应的POD 实现从宿主机外层访问k8s内部不同的宿主机上多个容器的访问技术。而且还实现了pod的动态发现。因此作为k8s内部的负载均衡器。不可删除。IP tables早期实现 后期用到IPVS.

1.1 k8s 组件介绍:

https://k8smeetup.github.io/docs/admin/kube-apiserver/
kubeapiserver
Kubernetes API server 为 api 对象验证并配置数据,包括 pods 、 services 、replicationcontrollers 和其它 api 对象 API Server 提供 REST 操作和到集群共享状态的前端,所有其他组件通过它进行交互。数据保存在etcd中。本身master集群不存储数据。

https://k8smeetup.github.io/docs/admin/kube-scheduler/
kubescheduler
kubescheduler 是一个拥有丰富策略、能够感知拓扑变化、支持特定负载的功能组件,它对集群的可用性、性能表现以及容量都影响巨大。 scheduler 需要考虑独立的和集体的资源需求、服务质量需求、硬件 软件 策略限制、亲和与反亲和规范、数据位置、内部负载接口、截止时间等等。如有必要,特定的负载需求可以通过 API 暴露出来。
亲和与反亲和:不同项目 不同部门的硬件资源是独立的,通常只有一套K8S 让指定的pod跑到指定的服务 可以让pod设置一些策略。让pod指定运行在node节点上,pod和节点node绑定/

https://k8smeetup.github.io/docs/admin/kube-controller-manager/
kubecontroller manager
Controller Manager 作为集群内部的管理控制中心,负责集群内的Node 、 Pod 副本、服务端点( Endpoint )、命名空间 Namespace )、服务账号 ServiceAccount )、资源定额( ResourceQuota )的管理,当某个 Node 意外宕机时, Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

https://k8smeetup.github.io/docs/admin/kube-proxy/
kubeproxy
kubeproxy Kubernetes 网络代理运行在 node 上,它反映了 node 上 Kubernetes API 中定义的服务,并可以通过一组后端进行简单的 TCP 、 UDP 流转发或循环模式( round robin)的 TCP 、 UDP 转发,用户必须使用 apiserver API 创建一个服务来配置代理,其实 就是 kubeproxy 通过在主机上维护网络规则并执行连接转发来实现 Kubernetes 服务访问 。

https://k8smeetup.github.io/docs/admin/kubelet/
kubelet
kubelet 是主要的节点代理,它会监视已分配给节点的 pod ,具体功能 如下:

1.向master 汇报 node 节点的状态信息
2.接受指令并在Pod 中创建 docker 容器
3.准备Pod 所需的数据卷
4.返回pod的运行状态
5.在node 节点执行容器健康检查

https://github.com/etcd-io/etcd
etcd
etcd是 C oreOS 公司开发目前 是 Kubernetes 默认 使用 的 key value 数据 存储系统, 用于 保存所有集群数据, 支持 分布式集群功能 ,生产 环境使用 时 需要为 etcd 数据提供定期备份机制 。

https://kubernetes.io/zh/docs/concepts/overview/components/ #新版本组件介绍

https://etcd.io/docs/v3.4.0/ #etcd配置参考

1.2 部署规划图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值