您当前所在位置:首页推荐资讯搞不明白为什么大家都在学习 k8s

搞不明白为什么大家都在学习 k8s

更新:2024-04-23 04:34:39编辑:打听下载归类:推荐资讯人气:3

  作者 | 小明菜市场

  来源 | 小明菜市场(ID:fileGeek)

  头图 | CSDN 下载自东方IC

  前言

  都2020年了,你还不知道kubernetes就真的真的真的out啦。(贩卖焦虑体) 什么是k8s,k8s这个词来自于希腊语,有主管,舵手,船长的意思,我们从图标中能看出来。

  在k8s的网站上,描述是这样的

  生产级别的容器编排系统

  从定义中可以提炼出三个关键字,分别是

  生产级别

  容器

  编排系统

  说k8s是生产级别的有如下的几个原因:

  k8s 是谷歌的开源系统,基于谷歌的系统设计,并且已经在谷歌系统上平稳运行的很久。

  k8s 是CNCF的首个毕业项目。

  容器有以下几个特点

  可移植性,容器可以被任何类型的***作系统安装使用。

  包容性:支持多种类型的软件,这些软件都可以打包在容器内谷歌音乐播放器。

  标准格式。

  共存,多个容器可以运行在同一个物理机上。

  隔离,不同的容器的软件彼此隔离。

  最重要的一句话:没有容器就没有微服务。

  容器和微服务化后,带来了一些好处,比如:

  模块间更加独立,可以独立的部署和发布,加快了发布和更新的速度

  隔离的运行环境,可以为不同模块定制不同的运行环境

  容器的编排系统可以有效的管理在宿主机上的容器。

  管理网络和访问

  跟踪容器的状态

  增大或缩小服务的规模

  实现负载平衡

  宿主机无响应后实现容器的重新分配

  服务发现

  管理容器的存储 等等…

  pod中容器之间共享数据,可以使用数据卷。

  容器内服务可能进程阻塞无法处理请求,可以设置监控检查的策略

  控制器维护者pod副本数量,保证一个pod或一组同类prod数量始终可用

  根据设定的指标,自动缩放pod副本数

  使用环境变量或DNS插件保证容器中程序发现pod入口访问地址。

  一组pod副本分配一个私有的集群ip地址,负载均衡转发请求到后端容器,在集群类其他pod可以通过clusterIP访问应用。

  更新服务不中断,一次更新一个pod,而不是同时删除整个服务。

  通过文件描述部署服务,使得应用程序部署变得高效。

搞不明白为什么大家都在学习 k8s

  Node节点组件集成cAdvisor资源收集工具,通过Heapster汇总,并保存到influxDB时序数据库,最后由Grafana展示worldbox。

  支持RBAC认证授权机制。

  k8s 集群中有管理节点,Master与工作节点,Node两种类型。

  管理节点Master主要负责k8s集群管理,集群中各个节点之间信息交互,任务调度,还负责容器,pod, namespaces , pv 等生命周期的管理。

  工作节点node主要为容器和pod提供计算资源,pod及其容器全部运行在工作节点上,工作节点通过kubelet服务与管理节点通信以管理容器的生命周期,并与集群其他节点进行通信。

  kubernetes api 资源***作的唯一入口,各种组件的协调者,以HTTP API 提供接口服务,并提供相关的认证,授权等机制,

  处理集群中常规的后台任务,一个资源对应一个控制器,而ControllerManager负责管理这些控制器,并维护集群的状态。

  负责资源的调度,按照预定的策略把pod调度到对应的Node节点上。

  kubelet是Master在Node节点上的agent,管理本机运行容器的生命周期,同时也负责Volume和网络的管理。例如创建容器,挂载数据卷,下载secret,获取容器和节点的状态等工作。

  在Node节点上实现Pod/serviced网络代理,提供cluster内部的服务发现和四层负载均衡。

  真正运行容器的地方

  分布式键值对储存系统,用于保存集群状态,比如pod,service等对象信息。

  核心层:最核心的功能,对外提供api 应用层,部署无状态应用,等,和路由。管理层:系统度量,自动化,以及RBAC等 接口层:kubectl命令行工具,以及客户端sdk 生态系统:分为外部的日志,监控等,内部的镜像仓库等。

  首先,查看所使用的 minikube 版本:

  启动 minikube:

  minikube 启动之后,会创建一个单节点 Kubernetes 集群。

  查看集群版本:

  这里有两个版本,client version 指的是 kubectl 命令行工具的版本,而 server version 才是 Kubernetes 的版本。

  查看更详细的版本信息:

  集群所在主机的 ip 为 172.17.0.77。

  注意:这里的 master 指的是 Kubernetes 集群的 master 节点(在 Kubernetes 集群中,节点分为两类,一类是 master 节点,一类是 node 节点)。那怎么看到 node 节点呢?

  host01 就是 node 节点,在当前环境中,实际上只有一台主机。这台主机既作为 master 节点,也作为 node 节点。

  下面以部署一个 nginx 为例来演示部署应用的过程:

  通过 run 命令创建一个名为 first-app 的 deployment,使用的是 docker hub 上最新的 nginx 镜像,并指定了应用端口为 80。deployment 是干嘛的呢?别急,往下看:

  查看当前的 deployment:

  查看当前的 pod:

  查看更详细的 pod 内容:

  已经部署好了一个 nginx 应用,那么要怎么去访问呢?这时候就需要用到 service。创建一个 service:

  查看创建好的名为 first-app 的 service :

  在 PORT(S) 一栏中,除了 80 端口,后面还有一个 30491 端口。这是使用了“NodePort”类型创建 service 分配的端口,通过主机 ip 和这个端口,就可以访问到这个 service 了。可以使用 curl 工具进行访问:

  刚刚已经成功访问到 nginx 应用,但有些时候,可能需要多个 nginx 来横向扩展,那么在 Kubernetes 中怎么实现呢?

  再查看当前的 pod,可以看到当前已经有了 3 个 first-app 了。

  如果觉得 3 个太浪费资源了,想减少 pod 的数量,那么可以使用同样的命令,把 replicas 参数的值改为需要的值就可以了。

  最常用的就是更新镜像。之前使用的是 docker hub 上最新的 nginx,现在用 1.10.3 这个比较老的版本来替代最新版本。先查看当前使用的 nginx 版本。这里有一个很简单的方法,访问一个不存在的页面,如下:

  当前使用的 nginx 版本是 1.13.9,接下来进行更新***作:

  再查看当前 nginx 的版本:

  nginx 版本已经成功更新为 1.10.3。三角洲部队7

  最后来讲讲删除应用,之前是通过 deployment 来创建应用,所以只需要删除 deployment 就可以删除对应的应用了英雄使命游戏。

  再查看一下当前的 pod:

  所有的 pod 都已经删除了。

底特律:变人PC版 虫虫助手最新版游戏盒子 v4.7.3.3 安卓版