kubernetes集群搭建手册( 通用版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013812710/article/details/52633265

目录 (Table of Contents)

kubernetes集群搭建手册

Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用。
本手册是一个搭建kubernetes的教程,开发、运维人员可以按照该手册搭建一套自己的kubernetes集群。kubernetes集群需要依赖etcd、flannel、docker,本教程也有相应的安装教程。

日期:2016-09-21 22:21:38 星期三

说明:由于时间关系,文档还没有完善好,比如参数说明,docker的安装配置,之后会完善更新的,争取在这六更新。按照该文档在搭建过程中遇到问题可以留言加评论,谢谢!

etcd的安装部署

在kubernetes集群中,集群的节点的信息、servicereplicationcontrollerpod等以及相关的事件(Event)记录都会存储在高可用键值存储系统Etcd中,所以,首先讲解etcd的安装以及启动部署。

下载安装


  1. 首先去etcd官网下载相关版本的etcd二进制包,例如我下载的是:etcd-v3.0.9-linux-amd64.tar.gz
  2. 解压etcd的二进制包文件,命令:tar -zxf etcd-v3.0.9-linux-amd64.tar.gz
  3. cp etcd-v3.0.9-linux-amd64/etcd etcd-v3.0.9-linux-amd64/etcdctl /usr/bin

配置启动


etcd -name etcd \
-data-dir /var/lib/etcd \
-listen-client-urls http://0.0.0.0:2378,http://0.0.0.0:4001 \
-advertise-client-urls http://0.0.0.0:2378,http://0.0.0.0:4001 \
>> /var/log/etcd.log 2>&1 &

参数说明:

  • -data-dir etcd存放数据的目录
  • listen-client-urls 指定哪此端口对etcd的client开放。
  • advertise-client-urls 把当前运行的etcd的client。 URL地址通知给cluster中的其它成员,如果不是部署etcd集群,参数可以不用设置。
  • >> /var/log/etcd.log 2>&1 & 输出日志到/var/log/etcd.log文件。

kubernetes集群Master节点的环境搭建

下载安装


  1. 首先去kubernetes官网下载相关版本的kubernetes二进制包(由于项目需求:v1.3.6),例如我下载的是:v1.3.6版本的kubernetes.tar.gz
  2. 解压kubernetes的二进制包文件,命令:tar -zxf kubernetes.tar.gz
  3. cd kubernetes/server/ && tar -zxf kubernetes-server-amd64.tag.gz && cd kubernetes/server/bin cp kube-apiserver kube-controller-manage kube-scheduler kubectl /usr/bin

配置启动


kube-apiserver配置启动
kube-apiserver \
--logtostderr=true --v=0 \
--etcd_servers=http://etcd运行环境的Ip:Port \
--insecure-bind-address=0.0.0.0 --insecure-port=8080 \
--service-cluster-ip-range=10.254.0.0/16 \
>> /var/log/kube-apiserver.log 2>&1 &

参数说明:

  • logtostderr 设置为true后日志不输出到文件,
  • v 日志的级别 0 info 1 warnning 2 error 3 fatal
  • etcd_servers etcd的连接地址
  • insecure-bind-address kueb-apiserer的对外服务的ip(安全模式下,不安全模式下,默认是127.0.0.1即localhost)
  • –insecure-port kueb-apiserer的对外服务的ip
  • service-cluster-ip-range 集群中分配给创建的pod的ip范围,通常会通过结合flannel来保证每个node节点中的pod的ip不会重复(后面docker安装的时候会讲到原理)
  • >> /var/log/kube-apiserver.log 2>&1 & 输出日志到指定文件

kube-controller-manager配置启动
kube-controller-manager \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /var/log/kube-controller-manager.log 2>&1 &

参数说明:

  • logtostderr 设置为true后日志不输出到文件,
  • v 日志的级别 0 info 1 warnning 2 error 3 fatal
  • master kube-apiserver启动时指定的对外服务的url,即kube-apiserver启动时指定的insecure-bind-address : insecure-port
  • >> /var/log/kube-apiserver.log 2>&1 & 输出日志到指定文件

kube-scheduler配置启动
kube-scheduler \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /var/log/kube-scheduler.log 2>&1 &

参数说明:

  • logtostderr 设置为true后日志不输出到文件,
  • v 日志的级别 0 info 1 warnning 2 error 3 fatal
  • master kube-apiserver启动时指定的对外服务的url,即kube-apiserver启动时指定的insecure-bind-address : insecure-port
  • >> /var/log/kube-apiserver.log 2>&1 & 输出日志到指定文件

kubernetes集群Node节点的环境搭建

下载安装


Master节点中已经下载了kubernete所有组件或者可运行插件的二进制文件,这里只需要将其中的kubelet、kube-proxy两个组件cp到Node节点中的/usr/bin目录下即可。

说明:所有的集群中的节点都可以这样部署,你有多少个节点,就在多少个节点上按照如下搭建就可以了。


配置启动


为了实现集群中docker容器(主要是夸机器的容器)的互连通信,Kubernetes的官方网站也提供了几种备选方案,如 L2网络, Flannel, OpenVSwitch等。本文主要采用Flannel。flannel的主要功能就是保证集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址,并使Docker容器可以互连。


flannel安装
  1. 首先去flannel官网下载相关版本的flannel二进制包,例如我下载的是:flannel-v0.6.1-linux-amd64.tar.gz
  2. 解压flannel的二进制包文件,命令:tar -zxf flannel-v0.6.1-linux-amd64.tar.gz
  3. cp flannel-v0.6.1-linux-amd64/flanneld /usr/bin

flannel启动配置

首先在etcd中设置值

`etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'`

启动flannel

flanneld \
-etcd-endpoints=http://etcd-ip:etcd-port \
>> /var/log/flannel.log 2>&1 &
source /run/flannel/subnet.env

参数说明:

  • etcd-endpoints etcd的连接url
  • >> /var/log/flannel.log 2>&1 & 日志输出指定目录
  • source /run/flannel/subnet.env 让flannel的网络设置生效

docker安装

由于用户环境的不同,安装dokcer的方式也不同,所以这里就不做安装的讲解,具体的安装方式,请自行google找相关的安装教程。


docker启动配置

docker安装完成之后,需要修改几个配置

首先,修改docker0

ifconfig docker0 查看docker0

echo ${FLANNEL_SUBNET}   查看是否flannel启动成功之后,执行的

source /run/flannel/subnet.env  生效

如果生效

ifconfig docker0 ${FLANNEL_SUBNET}

查看是否docker0发生变化,如果变化,修改成功
route -n 查看docker0

重启docker成功。

说明:为什么flannel,为什么要去修改docker0,为什么要去修改docker的启动参数?在此,我以我个人的理解说明一下:

  • 用flaanel 主要是去etcd中获取一个ip范围来给本节点规划了一个内网ip段,可以保证每个node节点分到的ip段不会存在重复的。这里需要注意的是:在etcd中规划flannel的网段范围的时候,该网段范围不能与kube-apiserver启动是设置的cluter-ip-range中指定的ip范围冲突。
  • 把docker0修改为flannel规划的ip段和修改启动参数,是为了避免多节点中容器ip可能重复的问题。因为你指定了参数,docker在创建容器的时候,会用你指定的ip段内ip去创建容器。

kubelet启动配置
kubelet \
--address=0.0.0.0 \
--port=10250 \
--logtostderr=true --v=0 \
--api-servers=http://api-server_ip:prort \
>> /var/log/kubelet.log 2>&1 &

参数说明:

  • address kubelet对外提供服务的ip
  • port kubelet对外提供服务的端口
  • logtostderr 设置为true后日志不输出到文件,
  • v 日志的级别 0 info 1 warnning 2 error 3 fatal
  • api-servers kube-apiserver启动时指定的对外服务的url,即kube-apiserver启动时指定的insecure-bind-address : insecure-port
  • >> /var/log/kubelet.log 2>&1 & 日志输出指定目录

kube-proxy启动配置
kube-proxy \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /var/log/kube-proxy.log 2>&1 &

参数说明:

  • logtostderr 设置为true后日志不输出到文件,
  • v 日志的级别 0 info 1 warnning 2 error 3 fatal
  • master kube-apiserver启动时指定的对外服务的url,即kube-apiserver启动时指定的insecure-bind-address : insecure-port
  • >> /var/log/kube-apiserver.log 2>&1 & 输出日志到指定文件

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试