阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker中部署Kubernetes

146次阅读
没有评论

共计 3775 个字符,预计需要花费 10 分钟才能阅读完成。

Kubernetes 为 Google 开源的容器管理框架,提供了 Docker 容器的夸主机、集群管理、容器部署、高可用、弹性伸缩 等一系列功能;Kubernetes 的设计目标包括使容器集群任意时刻都处于用户期望的状态,因而建立了一整套集群管理机制:容器自动重启、自动备份、容器自动伸缩等;Kubernetes 设计了 pod、replication controller、service 用于管理容器的了组件,并提供了 RESTful 格式接口用于操作他们;由于本篇文章主要是 Kubernetes 所以就不对理论相关进行过多介绍了;
本篇文章把 Kubernetes 部署到 Docker 中,使用三个节点 192.168.2.143 同时为 Master 和 minion 节点,另外还有 192.168.2.144、192.168.2.145 两个 minion 节点;

1、master 节点启动 etcd 容器
启动 etcd 容器

 -- 绑定 4001 端口
 docker run -d --net=host --restart=always --name=etcd -v /var/etcd/data:/var/etcd/data  kubernetes/etcd:2.0.5  /usr/local/bin/etcd --addr=192.168.2.143:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data

在 etcd 里插入 flannel 配置信息,指定 flannel 使用 10.0.0.0/ 8 区间

 docker exec -it etcd etcdctl set /solinx.co/network/config '{"Network":"10.0.0.0/8"}'  

2、在 master、minion1、minion2 节点配置 flanneld

 启动 flanneld, wget -c https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz

 ./flanneld --etcd-endpoints=http://192.168.2.143:4001 --etcd-prefix=/solinx.co/network --iface=ens33 > flannel.log  2>&1 &

flannel 启动后获得可用于分配的 IP 集合,存放于 /run/flannel/subnet.env 中,需要配置 docker 可用与分配的 IP

Ubuntu 下修改 Docker 配置文件

/lib/systemd/system/docker.service  增加 EnvironmentFile=-/etc/default/docker
 修改 ExecStart=/usr/bin/docker -d -H fd://  , 改成:  ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS

 source /run/flannel/subnet.env
 sh -c "echo DOCKER_OPTS=\\\"--bip=$FLANNEL_SUBNET --mtu=$FLANNEL_MTU\\\">> /etc/default/docker"

 service docker restart

3、Kubernetes 部署
下载 kubernetes.tar.gz 到 master、minion 节点中

 wget -c https://github.com/kubernetes/kubernetes/releases/download/v1.2.5/kubernetes.tar.gz

tar -zxvf 解压 kubernetes.tar.gz 文件后在 kubernetes/server 目录中找到 kubernetes-server-linux-amd64.tar.gz 将其解压,然后在 kubernetes/server/bin 目录下找到:kube-apiserver.tar、kube-controller-manager.tar、kube-scheduler.tar;
在 master 节点中导入 kubernetes Docker 镜像文件

 docker load -i kube-apiserver.tar
 docker load -i kube-controller-manager.tar
 docker load -i kube-scheduler.tar

这里 flannel 与 kubernetes 使用同一个 etcd

master 节点启动 apiServer

 docker run -d --name=apiserver --net=host gcr.io/google_containers/kube-apiserver:7bf05b2d35172296e4fbd2604362456f kube-apiserver --insecure-bind-address=192.168.2.143 --service-cluster-ip-range=10.0.0.0/16 --etcd-servers=http://192.168.2.143:4001  

master 节点启动 ControllerManager

 docker run -d --name=ControllerM gcr.io/google_containers/kube-controller-manager:6c95ef0b57ac9deda34ae1a4a40baa0a kube-controller-manager --master=192.168.2.143:8080

master 节点启动 Scheduler

 docker run -d --name=scheduler gcr.io/google_containers/kube-scheduler:e5342c3d8ced06850af97347daf6ae4b kube-scheduler --master=192.168.2.143:8080

服务端启动完成

 ./kubectl -s 192.168.2.143:8080 version 查看 kubernetes 版本信息

 Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.5", GitCommit:"25eb53b54e08877d3789455964b3e97bdd3f3bce", GitTreeState:"clean"}
 Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.5", GitCommit:"25eb53b54e08877d3789455964b3e97bdd3f3bce", GitTreeState:"clean"}

在 Master 节点查看服务 Container 启动情况:

 docker ps  

Docker 中部署 Kubernetes

在 143、144、145 minion 节点启动 kubelet

取得 minion 节点 IP

 NODE_IP=`ifconfig ens33 | grep 'inet addr:' | cut -d: -f2 | cut -d'' -f1`

 ./kubelet --api-servers=192.168.2.143:8080 --node-ip=$NODE_IP --hostname_override=192.168.2.144 > kubelet.log 2>&1 &

注意如果当前两个几点的主机名相同则一定要使用 hostname_override 参数,否则需要把主机名改为不同的;

在 master 上查看节点信息

 ./kubectl -s 192.168.2.143:8080 get no

Docker 中部署 Kubernetes

在 143、144、145 节点启动 kube-proxy

 ./kube-proxy --master=192.168.2.143:8080 > proxy.log 2>&1 &

下面的命令来查看 pod、replication controller、service 和 endpoint:

 ./kubectl -s 192.168.1.143:8080 get po
 ./kubectl -s 192.168.1.143:8080 get rc
 ./kubectl -s 192.168.1.143:8080 get svc
 ./kubectl -s 192.168.1.143:8080 get ep  

参考资料:
http://kubernetes.io/docs/user-guide/

Kubernetes 集群部署  http://www.linuxidc.com/Linux/2015-12/125770.htm

OpenStack, Kubernetes, Mesos 谁主沉浮  http://www.linuxidc.com/Linux/2015-09/122696.htm

Kubernetes 集群搭建过程中遇到的问题及解决  http://www.linuxidc.com/Linux/2015-12/125735.htm

Kubernetes 的详细介绍:请点这里
Kubernetes 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133020.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3775字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中