kubernetes
其主要功能如下:
1) 用户不需要关心需要多少台机器,只需要关心软件(服务)运行所需的环境。以服务为中心,你需要关心的是api,如何把大服务拆分成小服务,如何使用api去整合它们。
2) 以集群的方式运行管理容器。
3) 解决Docker跨机器容器之间的通讯问题。
4) Kubernetes的Pods自我修复机制使得容器集群总是运行在用户指定的状态。
Kubernetes有几个重要的概念:
1.
Pod
Pod是k8s的最基本的操作单元,包含一个或多个紧密相关的容器,类似于豌豆荚的概念。一个Pod可以被一个容器化的环境看作应用层的“逻辑宿主机”(Logical Host).一个Pod中的多个容器应用通常是紧耦合的。Pod在Node上被创建、启动或者销毁。
为什么k8s使用Pod在容器之上再封装一层呢?一个很重要的原因是Docker容器之间的通信受到Docker网络机制的限制。在Docker的世界中,一个容器需要通过link方式才能访问另一个容器提供的服务(端口)。大量容器之间的link将是一个非常繁重的工作。通过Pod的概念将多个容器组合在一个虚拟的“主机”内,可以实现容器之间仅需通过Localhost就能相互通信了。
一个Pod中的应用容器共享同一组资源:
(1)PID命名空间:Pod中的不同应用程序可以看见其他应用程序的进程ID
(2)网络命名空间:Pod中的多个容器能访问同一个IP和端口范围
(3)IPC命名空间:Pod中的多个容器能够使用SystemV IPC或POSIX消息队列进行通信。
(4)UTS命名空间:Pod中的多个容器共享一个主机名
(5)Volumes(共享存储卷):Pod中的各个容器可以访问在Pod级别定义的Volumes
不建议在k8s的一个pod内运行相同应用的多个实例。也就是说一个Pod内不要运行2个或2个以上相同的镜像,因为容易造成端口冲突,而且Pod内的容器都是在同一个Node上的
一个Pod包含一个或者多个容器。
Pod的YAML 描述方式:
kubectl create -f ./hello-world.yaml
运行如下命令就会查看Pod状态:
$ kubectl get pods
2. minion/node
minion和node的意思是一样的,是一个主机节点的意思。例如一个虚拟机、一个物理主机。注意,一个Pod不会跨越node。就是即使一个Pod有多个容器,里面的容器会同时存在在同一个Node中,不会分别在不同的Node中。 Kubernetes的调度器会根据Pod的资源需求定义来将Pod分配到不同的Node中(如今支持定义CPU需求、内存需求)。Kubernetes的master/slave程序运行在node里面。
3. Replication Controller
Replication 是复制的意思,用来解决Pod的线性扩容缩容问题,Replication Controller可以创建一个pod的多个副本,并且可以保证集群中该Pod的副本数量保持平衡。例如副本数量规定为10,如果某个pod挂了,数量变为9,那么Replication Controller会自动创建一个Pod,恢复到10个副本的水平。 多个副本可以在不同的Node中。
Replication Controller的YAML 描述方式:
template是对Pod的描述。ReplicationController根据template创建多个Pod(数量=replicas),标签为app: nginx。
运行如下命令就会创建Replication Controller:
kubectl create -f ./nginx-rc.yaml
4. Service
Service用来解决Pod的服务发现问题,因为Pod的运行状态可以动态变化(机器切换、宕机),所以访问端最好不要直接去访问某个Pod,而是通过service,service能够将请求进行转发。
服务的YAML描述如下:
该定义创建了一个服务,会将标签为app:nginx(selector选的)的Pod纳入服务中,也就是说该服务接收到的请求会转发给标签为app: nginx的Pod处理。注意:service是负载均衡的,会自动分配请求给不同的Pod。有没有觉得很方便?把Serivce暴露给客户端,客户端只需要请求service,不需要知道后台是个集群。
运行如下命令就会创建Service:
5. Label
标签,用来做逻辑上的标记。用来关联service、replication controller和pod.
Kubernetes架构
下图为官方的架构图。

从图中看出,Kubernetes的架构是典型的master/Slave架构。
Master负责总体的协调控制,Slave负责具体的任务。Master/Slave的组件如下:

盗个图,下图能更清晰的展示Kubernates。

持续更新~~~
kubernetes的更多相关文章
- [笔记]kubernetes 无法启动问题
在启动kubernetes的时候报错误. ERROR: timed out for http://localhost:4001/v2/keys/ 原因是无法启动etcd, etcd 监听4001本地端 ...
- 基于Kubernetes在AWS上部署Kafka时遇到的一些问题
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 交代一下背景:我们的后台系统是一套使用Kafka消息队列的数据处理管线 ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- Docker中部署Kubernetes
Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...
- kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统
一.介绍 1. Fluentd 是一个开源收集事件和日志系统,用与各node节点日志数据的收集.处理等等.详细介绍移步-->官方地址:http://fluentd.org/ 2. Elastic ...
- kubernetes 文档
kubernetes 官方文档:http://kubernetes.io/docs/ null
- kubernetes 1.4.5集群部署
2016/11/16 23:39:58 环境: centos7 [fu@centos server]$ uname -a Linux centos 3.10.0-327.el7.x86_64 #1 S ...
- kubernetes单机板
参考地址: *** http://blog.csdn.net/carter115/article/details/51121223 ** http://www.cnblogs.com/dongdong ...
- 一次kubernetes资源文件创建失败的排查
今天在jenkins中创建kubernetes的rc时,检查目标yaml文件时报出如下错误: + /opt/jenkins/kube/kubectl -s http://10.xx.xx.xx:808 ...
- kubernetes&tensorflow
谷歌内部--Borg Google Brain跑在数十万台机器上 谷歌电商商品分类深度学习模型跑在1000+台机器上 谷歌外部--Kubernetes(https://github.com/kuber ...
随机推荐
- easyui 》 radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...
- WLAN信道
- C++混合编程之idlcpp教程Lua篇(7)
上一篇在这 C++混合编程之idlcpp教程Lua篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与LuaTutorial4工程相似,工程LuaTutorial5中,同样加入了四个文件: ...
- C# Retry重试操作解决方案(附源码)
一.前言 (1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发Threa ...
- Dubbo框架选型
一.为什么会是dubbo 1.Dubbo是一个分布式服务框架,提供RPC(远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.) 远程服务调用方案,以及SOA ...
- Kylin查询性能低下原因分析
在处理指数行情数据时(IDXD),我遇到一个KYLIN性能查询低下的问题,非常奇怪.经过一番研究发现了其中的原因并顺利解决: 症状: select count(*) from sensitop.idx ...
- 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 对于iOS程序员来说,内存管理是入门的 ...
- Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...
- JavaScript使用DeviceOne开发实战(三)仿微信应用
这是一个系列的文档,长期目标是利用DeviceOne开发一些目前使用广泛的优质手机应用,我们会最大化的实现这些应用的每一个功能和细节,不只停留在简单的UI模仿和Demo阶段,而是一个基本可以使用的实际 ...
- 运用DebugDiag诊断ASP.Net异常
Debug Diagnostic Tool (DebugDiag)是用来帮助诊断IIS/COM+等应用假死.性能差.内存泄露及碎片和崩溃等问题的工具. 本文介绍如何运用DebugDiag诊断特定的AS ...


