设为首页 收藏本站
查看: 2356|回复: 2

[经验分享] Docker中部署Kubernetes

[复制链接]

尚未签到

发表于 2017-6-7 10:58:20 | 显示全部楼层 |阅读模式
  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配置文件
  

  在/etc/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    

DSC0000.png

  在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  

DSC0001.png

  在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/
  
文章首发地址:Solinx
  
http://www.solinx.co/archives/620

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-384716-1-1.html 上篇帖子: 在Ubuntu16.04集群上手工部署Kubernetes 下篇帖子: 为Kubernetes集群部署本地镜像仓库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表