博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes简要介绍
阅读量:6658 次
发布时间:2019-06-25

本文共 2808 字,大约阅读时间需要 9 分钟。

一、Kubernetes体系架构

Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:
1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
2) 以集群的方式运行、管理跨机器的容器。
3) 解决Docker跨机器容器之间的通讯问题。
4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
Kubernetes简要介绍

Kubernetes Master节点的组成

1、etcd
所有的持久性状态都保存在etcd中。Etcd同时支持watch,这样组件很容易得到系统状态的变化,从而快速响应和协调工作。

2、Kubernetes API Server

这个组件提供对API的支持,响应REST操作,验证API模型和更新etcd中的相应对象。

3、Scheduler

通过访问Kubernetes中/binding API, Scheduler负责Pods在各个节点上的分配。Scheduler是插件式的,Kubernetes将来可以支持用户自定义的scheduler。

4、Kubernetes Controller Manager Server

Controller Manager Server负责所有其它的功能,比如endpoints控制器负责Endpoints对象的创建,更新。node控制器负责节点的发现,管理和监控。将来可能会把这些控制器拆分并且提供插件式的实现。

Kubernetes slave节点的组成

1、Kubelet
Kubelet组件管理Pods和它们的容器,镜像和卷等信息。

2、Kube-Proxy

Kube-proxy是一个简单的网络代理和负载均衡器。它具体实现Service模型,每个Service都会在所有的Kube-proxy节点上体现。根据Service的selector所覆盖的Pods, Kube-proxy会对这些Pods做负载均衡来服务于Service的访问者。
Kubernetes简要介绍

二、Kubernetes组件

Kubernetes以RESTFul形式开放接口,用户可操作的REST对象有三个:
1、pod:是Kubernetes最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例。比如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。

2、service:是pod的路由代理抽象,用于解决pod之间的服务发现问题。因为pod的运行状态可动态变化(比如切换机器了、缩容过程中被终止了等),所以访问端不能以写死IP的方式去访问该pod提供的服务。service的引入旨在保证pod的动态变化对访问端透明,访问端只需要知道service的地址,由service来提供代理。

3、replicationController:是pod的复制抽象,用于解决pod的扩容缩容问题。通常,分布式应用为了性能或高可用性的考虑,需要复制多份资源,并且根据负载情况动态伸缩。通过replicationController,我们可以指定一个应用需要几份复制,Kubernetes将为每份复制创建一个pod,并且保证实际运行pod数量总是与该复制数量相等(例如,当前某个pod宕机时,自动创建新的pod来替换)。

可以看到,service和replicationController只是建立在pod之上的抽象,最终是要作用于pod的,那么它们如何跟pod联系起来呢?这就要引入label的概念:label其实很好理解,就是为pod加上可用于搜索或关联的一组key/value标签,而service和replicationController正是通过label来与pod关联的。如下图所示,有三个pod都有label为"app=backend",创建service和replicationController时可以指定同样的label:"app=backend",再通过label selector机制,就将它们与这三个pod关联起来了。例如,当有其他frontend pod访问该service时,自动会转发到其中的一个backend pod。

三、软件包安装

centos7系统通过yum方式安装即可。当前kubernetes的最新版本为1.9,目前尚不建议在生产环境使用1.9版本,官网推荐使用kubeadm部署,为了更简单也更系统的学习kubernetes集群的组件,本系列文章采用rpm方式安装kubernetes 1.5.2 版本,后续会介绍如何本地离线安装1.9版本。

# yum -y install etcd kubernetes

Kubernetes简要介绍
1、通用配置文件
/etc/kubernetes/config

2、Apiserver服务配置文件

/etc/kubernetes/apiserver
启动脚本:/lib/systemd/system/kube-apiserver.service

3、kube-controller-manager 服务配置文件

/etc/kubernetes/controller-manager
启动脚本:/lib/systemd/system/kube-controller-manager.service

4、kube-scheduler服务配置文件

/etc/kubernetes/scheduler
启动脚本: /lib/systemd/system/kube-scheduler.service

5、kubernet服务配置文件

/etc/kubernetes/kubelet
启动脚本:/lib/systemd/system/kubelet.service

6、Kube-proxy服务

/etc/kubernetes/proxy
启动脚本:/lib/systemd/system/kube-proxy.service

五、服务启动

1、master节点

# systemctl start etcd# systemctl start kube-apiserver*# systemctl start kube-controller-manager*# systemctl start kube-scheduler*

2、slave节点

# systemctl start docker*# systemctl start kubelet*# systemctl start kube-proxy*

六、注意事项

在kubernetes系统中,对容器的要求是,需要一直在前台执行。

转载地址:http://zkqto.baihongyu.com/

你可能感兴趣的文章
代码保存好
查看>>
iOS: 字体样式
查看>>
hadoop程序MapReduce之MaxTemperature
查看>>
面试题16:反转链表
查看>>
iOS开发基础知识--碎片22
查看>>
【最终幻想15 国王之剑】制作介绍2:最大限度满足角色,背景和道具的要求
查看>>
Selenium Web 自动化 - 项目实战环境准备
查看>>
mysql乱码
查看>>
FT项目开发技术点(三)
查看>>
JAVA 方法或者类的注释快捷键
查看>>
Pro Mac 如何将英文文件夹汉化为中文
查看>>
Python之多进程
查看>>
CSS选定第k个元素
查看>>
[转]MFC下关于“建立空文档失败”问题的分析
查看>>
内存与cpu的关系
查看>>
关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?...
查看>>
char数组与char指针
查看>>
javac 及 java命令的使用问题(错误或无法加载主类)
查看>>
delphi 最专业的学习论坛,全英文哦,可以练英文阅读 http://www.delphigroups.info/forum/2/...
查看>>
HTTP 代理如何正确处理 Cookie
查看>>