ubuntu 16.04下安装kubernetes1.6(一)

1 kubernetes 简介

kubernetes是提供了一套组件来管理容器的集群管理系统,kubernetes可以放便地管理跨主机运行的容器,可以对容器进行维护和扩展。

2 kubernetes核心组件

master端组件

2.1 apiserver

kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTFul接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到etcd(一个分布式强一致性的key/value存储)

2.2 controller-manager

负责执行各种控制器,目前有两类:

endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。

replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

2.3 scheduler

负责集群的资源调度,为新建的pod分配机器

2.4 etcd

提供pod,services等信息的持久化存储

minion端组件

2.5 kubelet

负责管控docker容器,如启动/停止、监控运行状态等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态

2.6 kube-proxy

负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转发。

3 基本操作对象

3.1 pod

Kubernetes最基本的部署调度单元,可以包含一个或多个container,逻辑上表示某种应用的一个实例。比如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。

3.2 service

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

3.3 replicationController

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

service和replicationController只是建立在pod之上的抽象,最终是要作用于pod的,那么它们如何跟pod联系起来呢?这就要引入label的概念:label就是为pod加上可用于搜索或关联的一组key/value标签,而service和replicationController正是通过label来与pod关联的。创建service和replicationController时可以指定同样的label:"xxx=yyy",再通过label selector机制,就将它们与这三个pod关联起来了。

4 kubernetes安装

4.1 环境准备


4.2  用openvswitch GRE实现kubernetes的网络模型

利用openvswitch GRE通道实现跨主机间的容器通信

分别在192.168.100.92和192.168.100.93上做下列操作

安装openvswitch,bridge-utils,docker

apt-get install openvswitch-switch bridge-utils docker-engine

建立ovs bridge

ovs-vsctl add-br obr0

建立gre,并将新建的gre0添加到obr0

ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.93

在192.168.100.93上将remote_ip=192.168.100.93改为remote_ip=192.168.100.92

创建linux bridge

brctl addbr kbr0

添加obr0为kbr0的接口

brctl addif kbr0 obr0

设置docker0为down状态

ip link set dev docker0 down

删除docker0

ip link del dev docker0

为了是kbr0永久生效,在/etc/network/interfaces,添加如下语句

auto kbr0

iface kbr0 inet static

address 172.17.1.1

netmask 255.255.255.0

dns-nameservers 8.8.8.8

up route add -net 172.17.2.0/24 gw 192.168.100.93 dev enp0s3

在192.168.100.93的/etc/network/interfaces,添加如下语句

auto kbr0

iface kbr0 inet static

address 172.17.2.1

netmask 255.255.255.0

dns-nameservers 8.8.8.8

up route add -net 172.17.1.0/24 gw 192.168.100.92 dev enp0s3

开启ip_forward

在/etc/sysctl.conf中开启

net.ipv4.ip_forward=1

sysctl -p

分别在192.168.100.92上ping 172.17.2.1,在192.168.100.93上ping 172.17.1.1,如果能相互ping通则GRE通道已经打通了。

ubuntu 16.04下安装kubernetes1.6(一)_第1张图片
ubuntu 16.04下安装kubernetes1.6(一)_第2张图片











你可能感兴趣的:(ubuntu 16.04下安装kubernetes1.6(一))