经过几番折腾终于搞定Kubernetes了,我们要在Openstack上部署Kubernetes集群,使用最新工具Kubeadm来安装,由于不能直接访问Kubernetes的源,我们需要一台可以穿墙的机器,可以是个人电脑,另外需要一台基于Docker快照的云主机,将下载后的所有资源放到这台机器中生成新的Kubernetes快照,用来做为以后Kubernetes集群的系统基础。

下载Kubernetes依赖资源

所有操作在可以穿墙的机器上进行

1,下载安装源

我们使用的kubernetes版本是1.4.5, 参考官方安装文档,http://kubernetes.io/docs/getting-started-guides/kubeadm/ ,配置好源后,仅下载所有Kubernetes依赖的安装包,注意这里不需要再安装Docker了

yum install -y  kubelet kubeadm kubectl kubernetes-cni  --downloadonly --downloaddir=/root/rpmsource

在安装的时候配置一个本地源。

下载kubernetes镜像

kubernetes一些服务是运行在Docker中的,所以我们需要提前下载好依赖的镜像到本地,然后Push到我们在上文中说到的Registry2.io中

images=(gcr.io/google_containers/kube-proxy-amd64:v1.4.5 gcr.io/google_containers/kube-apiserver-amd64:v1.4.5 gcr.io/google_containers/kube-scheduler-amd64:v1.4.5 gcr.io/google_containers/kube-controller-manager-amd64:v1.4.5 gcr.io/google_containers/kube-discovery-amd64:1.0 gcr.io/google_containers/kubedns-amd64:1.7 gcr.io/google_containers/exechealthz-amd64:1.1 gcr.io/google_containers/kube-dnsmasq-amd64:1.3 gcr.io/google_containers/pause-amd64:3.0 gcr.io/google_containers/etcd-amd64:2.2.5 weaveworks/weave-npc:1.7.2 weaveworks/weave-kube:1.7.2 weaveworks/scope:0.17.1 weaveworks/weaveexec:1.6.1)
for imageName in ${images[@]} ; do
docker pull $imageName
localName=registry2.io/${imageName/gcr.io\//}
docker tag $imageName $localName
docker push $localName
echo $localName
done

注意你要安装的版本号,在用的时候同样的方法pull下来再把tag改回去。

将所有下载好的资源上传到云主机上,并生成一个新的快照做为以后创建Kubernetes集群主机的基础系统!

Kubernetes初始化

现在可以使用Kubernetes的快照创建三台云主机,一台Master,其余的做为Worker,如图



注意网段不要跟Kubernetes的冲突,Kubernetes默认是10,这里改为100!

按照官方文档,安装之后,在Master上做init操作

kubeadm init --use-kubernetes-version=v1.4.5

需要注意的是一定要等所有的pods都处于Running状态再进行一步操作,比如安装Web UI等

另外需要注意的一点是一定要按照顺序操作,先添加一台子结点再初始化网络,反之始化网络时总是失败,其它的子结点可以在后序慢慢添加。

组件安装

Web UI

安装参考http://kubernetes.io/docs/user-guide/ui/ ,一条Kubectl命令搞定

配置heapster,支持图形展示cpu、内存等数据

https://github.com/kubernetes/heapster/blob/master/docs/influxdb.md

Weave Scope

一个图形化的k8s所有资源的拓扑、pods依赖展现等

安装参考,很简单,参考https://www.weave.works/docs/scope/latest/installing/

常用操作

记住,有了Kubernetes就不要再想着直接操作Docker了,大多数操作基本都被封装在了Kubectl命令中了,Kubect的常用命令大家在网上搜索一下,这里就不一一列举了,只说几个非常有用的操作,

  • kubectl exec pod_id_xxx date  在PODS中运行命令
  • kubectl exec pod_id_xxx -it /bin/sh  进入PODS
  • kubectl delete -f xxx.yml  删除资源
  • kubectl apply -f xxx.yml  更新、修改资源,没有的话会创建,所以可以直接使用apply,如果失败尝试删除再create!
  • kubectl create -f xxx.yml  创建资源
  • kubectl get po --all-namespaces  所出所有pods资源

到此我们的基本条件都准备好了,下文将开始做运行测试,敬请期待。

Openstack+Kubernetes+Docker微服务实践之路--Kubernetes的更多相关文章

  1. Openstack+Kubernetes+Docker微服务实践之路--基础设施

    近两年微服务在网上聊的如此的如火如荼,备受关注,我在去年下半年的一个项目中也用到了阿里云的EDAS.HSF,深有体会,最近时间空闲出于好奇,决定一探究竟打算自建微服务平台,基本实现EDAS.HSF的功 ...

  2. Openstack+Kubernetes+Docker微服务实践之路--RPC

    重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合.  在选型一文中说到我们选定的RPC框架是Apache Thrift,它的用法是在Ma ...

  3. Openstack+Kubernetes+Docker微服务实践之路--选型

    上一篇博文中我们选定Openstack做为我们的基础设施IAAS平台,本文将明确我们用什么技术做为微服务平台的技术选型. 经过对微服务的特性总结和添加一些个性需求后对微服务平台的基本要求 PRC远程调 ...

  4. Openstack+Kubernetes+Docker微服务实践之路--服务发布

    结合上文,我们的服务已经可以正常运行了,但它的访问方式只能通过服务器IP加上端口来访问,如何通过域名的方式来访问到我们服务,本来想使用Kubernetes的Ingress来做,折腾一天感觉比较麻烦,I ...

  5. Openstack+Kubernetes+Docker微服务实践之路--Docker和Registry2

    渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Centos7,先在一台云主机上安装Docker,Docker的安装非 ...

  6. Openstack+Kubernetes+Docker微服务实践之路--弹性扩容

    服务上线就要顶的住压力.扛的住考验,不然挨说的还是我们这帮做事的兄弟,还记得上图这个场景吗 老办法是服务集群部署,但总归有个上限,之前跟阿里合作的时候他们有个弹性计算可以通过设置CPU的阀值来动态扩展 ...

  7. Openstack+Kubernetes+Docker微服务实践

    Openstack+Kubernetes+Docker微服务实践 .....   Openstack+Kubernetes+Docker微服务实践之路--选型 posted @ 2016-11-15 ...

  8. QCon技术干货:个推基于Docker和Kubernetes的微服务实践

    2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...

  9. Openstack+Kubernetes+Docker微服务

    Openstack+Kubernetes+Docker微服务 渐入佳境,我们开始比较具体的工作,由于Docker是一个基础组件,所以本文的主题是Docker和Registry2. 底层系统基于Cent ...

随机推荐

  1. 如何启动redis

    直接运行redis-server既可以启动redis

  2. Ubuntu16.04配置phpmyadmin

    原文 如何安装phpmyadmin-Mysql 数据库管理 使用界面管理器:系统->系统管理->新立得软件包管理器->搜索 phpmyadmin->右键标记安装.或直接使用一条 ...

  3. 基本C语言滤波算法

    11种软件滤波方法的示例程序 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1.限副滤波 /*  A值可根据实际情况调整 value为有效值,new ...

  4. My 1st webUI try

    1. Add three control to the UI: StartTime EndTime Weekdays: 2015-11-17 20:26:40 data-model: Html5在ht ...

  5. Git 取消跟踪已版本控制的文件

    http://www.cnblogs.com/cposture/p/git.html 转: Git 是一个很好的版本控制工具,当然驾驭起来相比 SVN 要稍微复杂一些.初入 Git,难免有一些问题.比 ...

  6. 前端js面试中的常见的算法问题

    虽说我们很多时候前端很少有机会接触到算法.大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面.实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的.如果将来当我们面对较为复杂 ...

  7. WebIM 聊天 Demo

    最近 2 个月用业余时间写了一个 IM ,动手之前想了很多,包括前期设计.语言.数据库等,经过了一番思想斗争,最终前台用 Vue.js 展示,Server 使用 node ,数据库使用 MongoDB ...

  8. UICollectionView 自定义组头组尾的XIB方法

    UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已.这里面不赘述. 1. UIC ...

  9. CSS、HTML5、JS

    [att*=value]{}包含value属性的所有元素样式.[id*=div]{} a[href$=jpg]:after{} [att^=value]{}开头字符包含value属性的所有元素样式 [ ...

  10. Redmine插件

    1.redmine_customize_core_fields可以对自带字段进行设置,看起来很不错,2016年6月23日上线,安装失败, 看来测试不完整.redmine_issue_field_vis ...