kubernetes集群部署
鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试。kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,coreos,aws等iaas平台,部署起来也相当的方便。鉴于网上众多资料基于的是不少老版本,本篇文章针对最新的kubernetes及其依赖组件的部署简要阐述。通过本文可以比较粗暴的运行你的kubernetes集群,要优雅还需要更多的工作。部署主要分为三步:
1、准备机器并打通网络
如果要部署kubernetes集群至少3台机器,一个作为master两个作为minion。如果有4台机器还可以一个作为etcd服务,如果更多可以部署一个etcd集群和更多的minion,这里以4台机器为例子,这里说的机器可以是物理机也可以是kvm虚拟机。机器列表:
2、部署相关组件
kubernetes安装主要分成3部分:etcd集群、master节点和minions。
本文为了方便以4台云主机为例搭建一个kubernetes集群,云主机机器分配如下所示:
ip
角色
10.180.64.6
Kubernetes master
10.180.64.7
Etcd node
10.180.64.8
Kubernetes minion1
10.180.64.9
Kubernetes minion2
2.1 etcd集群
本次示例中以一台云主机作为etcd node,如需etcd集群请参照后续etcd使用介绍进行搭建。
root@cnsdev-paas-master:~# curl -L https://github.com/coreos/etcd/releases/download/v2.0.0-rc.1/etcd-v2.0.0-rc.1-linux-amd64.tar.gz-o etcd-v2.0.0-rc.1-linux-amd64.tar.gz
root@cnsdev-paas-master:~# tar xzvf etcd-v2.0.0-rc.1-linux-amd64.tar.gz
root@cnsdev-paas-master:~# cdetcd-v2.0.0-rc.1-linux-amd64
拷贝etcd下的所有可执行文件到/bin下
2.2. master节点
master节点上只涉及kubernetes安装,首先下载kubernetes执行以下指令。
root@cnsdev-paas-master:~#wget https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.8.0/kubernetes.tar.gz
root@cnsdev-paas-master:~#tar -zxvfkubernetes.tar.gz
root@cnsdev-paas-master:~#cdkubernetes/server/kubernetes
root@cnsdev-paas-master:~#tar -zxvfkubernetes-server-linux-amd64.tar.gz
root@cnsdev-paas-master:~#cd server/bin
在master节点上将kube-apiserver、kube-controller-manager、kube-scheduler、kubecfg、kubectl拷贝到/bin
2.3. minion节点
minion节点涉及到kubernetes、cadvisor和docker的安装,master上安装是已经下载了kubernetes,将解压出的kubelet和kube-proxy拷贝到所有minion上。
在minion节点上将kubelet、kube-proxy拷贝到/bin。
(ps:拷不拷贝到/bin都无所谓,将这些可执行文件的路径加到$PATH中可以)
安装cadvisor:
root@cnsdev-paas-master:wget https://github.com/google/cadvisor/releases/download/0.7.1/cadvisor
直接是可执行文件,不用解压了,拷贝到/bin下
安装docker:
在minion上安装docker,kubernetes会调用docker api创建pod作为worker容器,同时kubernetes本身的agent线程等也可以运行在docker里面,这样kubernetes升级也会比较容易。
debian 7下安装docker可以使用ubuntu的源,运行以下指令:
root@cnsdev-paas-master:echo debhttp://get.docker.io/ubuntu docker main | sudo tee/etc/apt/sources.list.d/docker.list
root@cnsdev-paas-master:apt-key adv--keyserver keyserver.ubuntu.com --recv-keys36A1D7869245C8950F966E92D8576A8BA88D21E9
root@cnsdev-paas-master:apt-getupdate
root@cnsdev-paas-master:apt-getinstall -y lxc-docker
运行一下dockerversion看看是否正常。
3、运行kubernetes集群
3.1. kubernetes配置文件
本节涉及的配置文件和在GCE上以及通过yum安装的kubernetes的配置文件不一定吻合,是全手动安装的暂时解决方案,如果已经集成到kubernetes项目下的cluster,可以运行kubernetes本身的一键部署采用salt部署整个集群,不需要手动操作,所以这里配置文件只适用于尚未被支持的平台上进行部署。所有需要的配置文件和执行脚本打包为kube-start.tar.gz。
3.1.1. etcd配置文件
etcd配置文件为cfg-etcd:
ETCD_NAME="-nameetcd-1"
etcd节点名称,如果etcd集群只有一个node,这一项可以注释不用配置,默认名称为default,这个名字后面会用到。
ETCD_PEER_ADDRESS="-initial-advertise-peer-urls http://hostip:7001"
etcd集群之间node的通讯地址,一般指定7001或者2380端口,这里etcd node的ip为10.180.64.7,所以这一项配置修改为http://10.180.64.7:7001。
ETCD_CLIENT_ADDRESS="-advertise-client-urls http://hostip:4001"
etcd node对外服务的地址,一般指定4001或者2379端口,这里修改为http://10.180.64.7:4001。
ETCD_DATA_DIR="-data-dir /home/data/etcd"
etcd存储数据的目录,自己指定,不同的目录相同的配置也会导致产生不同的etcd集群。
ETCD_LISTEN_PEER_ADDRESS="-listen-peer-urls http://0.0.0.0:7001"
etcd node监听的地址,如果为0.0.0.0将会监听所有接口,这里配置为http://0.0.0.0:7001。
ETCD_LISTEN_CLIENT_ADDRESS="-listen-client-urls http://0.0.0.0:4001"
对外服务监听地址,配置为http://0.0.0.0:4001。
ETCD_CLUSTER_MEMBERS="-initial-clusteretcd-1=http://ip_etcd-1:7001 etcd-2=http://ip_etcd-2:7001"
etcd集群成员地址的列表,因为为etcd集群内部,所以需指定7001或者2380端口,这里只有一个node,而且没有配置ETCD_NAME,那么默认名称为default,这里配置为default=http://10.180.64.7:70001。
ETCD_CLUSTER_STATE="-initial-cluster-statenew"
etcd集群状态,new表示新建一个集群,existing表示已经存在。
ETCD_ARGS=""
需要额外添加的参数,可以自己添加,etcd的所有参数可以通过etcd -h查看。
3.1.2. kubernetes集群配置文件
cfg-common:
KUBE_ETCD_SERVERS="--etcd_servers=http://10.180.64.7:4001"
etcd服务地址,前面已经启动了etcd服务,这里配置为http://10.180.64.7:4001。
KUBE_LOGTOSTDERR="--logtostderr=true"
表示错误日志记录到文件还是输出到stderr。
KUBE_LOG_LEVEL="--v=0"
日志等级。
KUBE_ALLOW_PRIV="--allow_privileged=false"
允许运行特权容器。
3.1.3. apiserver配置文件
cfg-apiserver:
KUBE_API_ADDRESS="--address=0.0.0.0"
监听的接口,如果配置为127.0.0.1则只监听localhost,配置为0.0.0.0会监听所有接口,这里配置为0.0.0.0。
KUBE_API_PORT="--port=8080"
apiserver的监听端口,默认8080,不用修改。
KUBE_MASTER="--master=10.180.64.6:8080"
apiserver的服务地址,controller-manager、scheduler及kubelet都会用到这个配置,这里配置为10.180.64.6:8080
KUBELET_PORT="--kubelet_port=10250"
minion上kubelet监听的端口,默认10250,无需修改
KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"
kubernetes可以分配的ip的范围,kubernetes启动的每一个pod以及serveice都会分配一个ip地址,将从这个范围分配。
KUBE_API_ARGS=""
需要额外添加的配置项,简单地启用一个集群无需配置。
3.1.4. controller配置文件
cfg-controller-manager:
KUBELET_ADDRESSES="--machines=10.180.64.8,10.180.64.9"
kubernetes集群中minion的列表,这里配置为10.180.64.8,10.180.64.9
KUBE_CONTROLLER_MANAGER_ARGS=""
需要额外添加的参数
3.1.5. scheduler配置文件
cfg-schedule:
如果需要额外参数可以自行添加,这里暂时不添加新的参数。
3.1.6. kubelet配置文件
cfg-kubelet:
KUBELET_ADDRESS="--address=10.180.64.8"
minion监听的地址,每个minion根据实际的ip配置,这里minion1上为10.180.64.8,minion2上为10.180.64.9。
KUBELET_PORT="--port=10250"
监听端口,不要修改,如果修改,同时需要修改master上配置文件中涉及的配置项。
KUBELET_HOSTNAME="--hostname_override=10.180.64.8"
kubernetes看到的minion的名称,使用kubecfglist minions时看到的将是这个名称而不是hostname,设置和ip地址一样便于识别。
KUBELET_ARGS=""
额外增加的参数
3.1.7. proxy配置文件
cfg-proxy:
如有额外参数自行配置,这里不需要添加。
3.2. kubernetes启动
将kube-start.tar.gz解压,拷贝cfg-etcd、kube-etcd到etcd node上,为kube-etcd增加可执行权限。拷贝其中的cfg-common、cfg-apiserver、cfg-controller-manager、cfg-schedule、apiserver、controller、schedule拷贝到master上,为apiserver、controller和schedule增加可执行权限。拷贝cfg-common、cfg-kubelet、cfg-proxy、cadv、kube、proxy到所有minion主机上,同时确保每一个minion的cfg-kubelet修改正确,为cadv、kube、proxy增加可执行权限。
首先在etcd node上运行etcd服务,执行
root@cnsdev-paas-master:./kube-etcd &
检验etcd是否正常,在master上执行
root@cnsdev-paas-master:curl -L http://10.180.64.7:4001/version
etcd 2.0.0-rc.1
然后在master上顺序执行
root@cnsdev-paas-master:./apiserver&
root@cnsdev-paas-master:./controller &
root@cnsdev-paas-master:./schedule &
最后在所有的节点上顺序执行
root@cnsdev-paas-master:./cadv &
root@cnsdev-paas-master:./kube &
root@cnsdev-paas-master:./proxy &
所有组件都运行之后,到master上检测下状态。
查看下集群状况
root@cnsdev-paas-master:~# kubecfg listminions
Minionidentifier Labels
---------- ----------
10.180.64.9
10.180.64.8
可以看出集群中有两个节点10.180.64.8和10.180.64.9,正是部署的2个节点。
查看当前集群的pod
root@cnsdev-paas-master:~#kubecfg list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
e473c35e-961d-11e4-bc28-fa163e8b5289 dockerfile/redis 10.180.64.9/ name=redisRunning
这里的redis你就当没看见,如果刚创建的集群这个时候是没有pod的,当然如果你是在gce或者aws上一键创建的,默认可能会看到kubernetes命名的pod,这是默认启动的状态监测的东东。
集群已经创建好了,那就来创建个tomcat的replicationController玩玩吧。有多种接口方式可以实现这个,这里选择json,需要写一个tomcat-controller.json的文件告诉kubernetes该怎么创建这个controller。当然文件的名字可以随意点,只要能看懂就行。tomca-controller.json大概长这个样子:
{
"id":"tomcatController",
"kind":"ReplicationController",
"apiVersion":"v1beta1",
"desiredState": {
"replicas": 2,
"replicaSelector":{"name":"tomcatCluster"},
"podTemplate":{
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "tomcat",
"containers": [{
"name": "tomcat",
"image":"tutum/tomcat",
"ports":[{
"containerPort":8080,"hostPort":80}
]
}]
}
},
"labels": {"name":"tomcatCluster"}}
},
"labels": {
"name":"tomcatCluster",
}
}
里面各项值的含义看完kubernetes实现分析之后就会明白了。写好文件之后就让kubernetes执行吧。
root@cnsdev-paas-master:/home/pod# kubecfg -ctomcat-pod.json create replicationControllers
如果告诉你success,那么可以查看下集群的controller
root@cnsdev-paas-master:/home/pod# kubecfg listreplicationControllers
Name Image(s) Selector Replicas
---------- ---------- ---------- ----------
redisController dockerfile/redis name=redis 1
tomcatController tutum/tomcat name=tomcatCluster 2
请无视redis,这时候看到tomcat的replicationController已经起来了,Replicas=2表示要在集群里面运行2个docker,docker运行的镜像就是tutum/tomcat了,如果你的minion上面没有这个镜像那么kubernetes就要去docker hub上为你下载了,如果本地有这个镜像那么kubernetes就直接在minion上为你运行2个tomcat的container(pod),来看看这一切是不是真的。
root@cnsdev-paas-master:/home/pod# kubecfg listpods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
643582db-97d1-11e4-aefa-fa163e8b5289 tutum/tomcat 10.180.64.9/ name=tomcatCluster Running
e473c35e-961d-11e4-bc28-fa163e8b5289 dockerfile/redis 10.180.64.9/ name=redis Running
64348fde-97d1-11e4-aefa-fa163e8b5289 tutum/tomcat 10.180.64.8/ name=tomcatCluster Running
更多的使用请看接口章节。
kubernetes安装主要分成3部分:etcd集群、master节点和minions。
本文为了方便以4台云主机为例搭建一个kubernetes集群,云主机机器分配如下所示:
ip |
角色 |
10.180.64.6 |
Kubernetes master |
10.180.64.7 |
Etcd node |
10.180.64.8 |
Kubernetes minion1 |
10.180.64.9 |
Kubernetes minion2 |
2.1 etcd集群
本次示例中以一台云主机作为etcd node,如需etcd集群请参照后续etcd使用介绍进行搭建。
root@cnsdev-paas-master:~# curl -L https://github.com/coreos/etcd/releases/download/v2.0.0-rc.1/etcd-v2.0.0-rc.1-linux-amd64.tar.gz-o etcd-v2.0.0-rc.1-linux-amd64.tar.gz
root@cnsdev-paas-master:~# tar xzvf etcd-v2.0.0-rc.1-linux-amd64.tar.gz
root@cnsdev-paas-master:~# cdetcd-v2.0.0-rc.1-linux-amd64
拷贝etcd下的所有可执行文件到/bin下
2.2. master节点
master节点上只涉及kubernetes安装,首先下载kubernetes执行以下指令。
root@cnsdev-paas-master:~#wget https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.8.0/kubernetes.tar.gz
root@cnsdev-paas-master:~#tar -zxvfkubernetes.tar.gz
root@cnsdev-paas-master:~#cdkubernetes/server/kubernetes
root@cnsdev-paas-master:~#tar -zxvfkubernetes-server-linux-amd64.tar.gz
root@cnsdev-paas-master:~#cd server/bin
在master节点上将kube-apiserver、kube-controller-manager、kube-scheduler、kubecfg、kubectl拷贝到/bin
2.3. minion节点
minion节点涉及到kubernetes、cadvisor和docker的安装,master上安装是已经下载了kubernetes,将解压出的kubelet和kube-proxy拷贝到所有minion上。
在minion节点上将kubelet、kube-proxy拷贝到/bin。
(ps:拷不拷贝到/bin都无所谓,将这些可执行文件的路径加到$PATH中可以)
安装cadvisor:
root@cnsdev-paas-master:wget https://github.com/google/cadvisor/releases/download/0.7.1/cadvisor
直接是可执行文件,不用解压了,拷贝到/bin下
安装docker:
在minion上安装docker,kubernetes会调用docker api创建pod作为worker容器,同时kubernetes本身的agent线程等也可以运行在docker里面,这样kubernetes升级也会比较容易。
debian 7下安装docker可以使用ubuntu的源,运行以下指令:
root@cnsdev-paas-master:echo debhttp://get.docker.io/ubuntu docker main | sudo tee/etc/apt/sources.list.d/docker.list
root@cnsdev-paas-master:apt-key adv--keyserver keyserver.ubuntu.com --recv-keys36A1D7869245C8950F966E92D8576A8BA88D21E9
root@cnsdev-paas-master:apt-getupdate
root@cnsdev-paas-master:apt-getinstall -y lxc-docker
运行一下dockerversion看看是否正常。
3.1. kubernetes配置文件
本节涉及的配置文件和在GCE上以及通过yum安装的kubernetes的配置文件不一定吻合,是全手动安装的暂时解决方案,如果已经集成到kubernetes项目下的cluster,可以运行kubernetes本身的一键部署采用salt部署整个集群,不需要手动操作,所以这里配置文件只适用于尚未被支持的平台上进行部署。所有需要的配置文件和执行脚本打包为kube-start.tar.gz。
3.1.1. etcd配置文件
etcd配置文件为cfg-etcd:
ETCD_NAME="-nameetcd-1"
etcd节点名称,如果etcd集群只有一个node,这一项可以注释不用配置,默认名称为default,这个名字后面会用到。
ETCD_PEER_ADDRESS="-initial-advertise-peer-urls http://hostip:7001"
etcd集群之间node的通讯地址,一般指定7001或者2380端口,这里etcd node的ip为10.180.64.7,所以这一项配置修改为http://10.180.64.7:7001。
ETCD_CLIENT_ADDRESS="-advertise-client-urls http://hostip:4001"
etcd node对外服务的地址,一般指定4001或者2379端口,这里修改为http://10.180.64.7:4001。
ETCD_DATA_DIR="-data-dir /home/data/etcd"
etcd存储数据的目录,自己指定,不同的目录相同的配置也会导致产生不同的etcd集群。
ETCD_LISTEN_PEER_ADDRESS="-listen-peer-urls http://0.0.0.0:7001"
etcd node监听的地址,如果为0.0.0.0将会监听所有接口,这里配置为http://0.0.0.0:7001。
ETCD_LISTEN_CLIENT_ADDRESS="-listen-client-urls http://0.0.0.0:4001"
对外服务监听地址,配置为http://0.0.0.0:4001。
ETCD_CLUSTER_MEMBERS="-initial-clusteretcd-1=http://ip_etcd-1:7001 etcd-2=http://ip_etcd-2:7001"
etcd集群成员地址的列表,因为为etcd集群内部,所以需指定7001或者2380端口,这里只有一个node,而且没有配置ETCD_NAME,那么默认名称为default,这里配置为default=http://10.180.64.7:70001。
ETCD_CLUSTER_STATE="-initial-cluster-statenew"
etcd集群状态,new表示新建一个集群,existing表示已经存在。
ETCD_ARGS=""
需要额外添加的参数,可以自己添加,etcd的所有参数可以通过etcd -h查看。
3.1.2. kubernetes集群配置文件
cfg-common:
KUBE_ETCD_SERVERS="--etcd_servers=http://10.180.64.7:4001"
etcd服务地址,前面已经启动了etcd服务,这里配置为http://10.180.64.7:4001。
KUBE_LOGTOSTDERR="--logtostderr=true"
表示错误日志记录到文件还是输出到stderr。
KUBE_LOG_LEVEL="--v=0"
日志等级。
KUBE_ALLOW_PRIV="--allow_privileged=false"
允许运行特权容器。
3.1.3. apiserver配置文件
cfg-apiserver:
KUBE_API_ADDRESS="--address=0.0.0.0"
监听的接口,如果配置为127.0.0.1则只监听localhost,配置为0.0.0.0会监听所有接口,这里配置为0.0.0.0。
KUBE_API_PORT="--port=8080"
apiserver的监听端口,默认8080,不用修改。
KUBE_MASTER="--master=10.180.64.6:8080"
apiserver的服务地址,controller-manager、scheduler及kubelet都会用到这个配置,这里配置为10.180.64.6:8080
KUBELET_PORT="--kubelet_port=10250"
minion上kubelet监听的端口,默认10250,无需修改
KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"
kubernetes可以分配的ip的范围,kubernetes启动的每一个pod以及serveice都会分配一个ip地址,将从这个范围分配。
KUBE_API_ARGS=""
需要额外添加的配置项,简单地启用一个集群无需配置。
3.1.4. controller配置文件
cfg-controller-manager:
KUBELET_ADDRESSES="--machines=10.180.64.8,10.180.64.9"
kubernetes集群中minion的列表,这里配置为10.180.64.8,10.180.64.9
KUBE_CONTROLLER_MANAGER_ARGS=""
需要额外添加的参数
3.1.5. scheduler配置文件
cfg-schedule:
如果需要额外参数可以自行添加,这里暂时不添加新的参数。
3.1.6. kubelet配置文件
cfg-kubelet:
KUBELET_ADDRESS="--address=10.180.64.8"
minion监听的地址,每个minion根据实际的ip配置,这里minion1上为10.180.64.8,minion2上为10.180.64.9。
KUBELET_PORT="--port=10250"
监听端口,不要修改,如果修改,同时需要修改master上配置文件中涉及的配置项。
KUBELET_HOSTNAME="--hostname_override=10.180.64.8"
kubernetes看到的minion的名称,使用kubecfglist minions时看到的将是这个名称而不是hostname,设置和ip地址一样便于识别。
KUBELET_ARGS=""
额外增加的参数
3.1.7. proxy配置文件
cfg-proxy:
如有额外参数自行配置,这里不需要添加。
3.2. kubernetes启动
将kube-start.tar.gz解压,拷贝cfg-etcd、kube-etcd到etcd node上,为kube-etcd增加可执行权限。拷贝其中的cfg-common、cfg-apiserver、cfg-controller-manager、cfg-schedule、apiserver、controller、schedule拷贝到master上,为apiserver、controller和schedule增加可执行权限。拷贝cfg-common、cfg-kubelet、cfg-proxy、cadv、kube、proxy到所有minion主机上,同时确保每一个minion的cfg-kubelet修改正确,为cadv、kube、proxy增加可执行权限。
首先在etcd node上运行etcd服务,执行
root@cnsdev-paas-master:./kube-etcd &
检验etcd是否正常,在master上执行
root@cnsdev-paas-master:curl -L http://10.180.64.7:4001/version
etcd 2.0.0-rc.1
然后在master上顺序执行
root@cnsdev-paas-master:./apiserver&
root@cnsdev-paas-master:./controller &
root@cnsdev-paas-master:./schedule &
最后在所有的节点上顺序执行
root@cnsdev-paas-master:./cadv &
root@cnsdev-paas-master:./kube &
root@cnsdev-paas-master:./proxy &
所有组件都运行之后,到master上检测下状态。
查看下集群状况
root@cnsdev-paas-master:~# kubecfg listminions
Minionidentifier Labels
---------- ----------
10.180.64.9
10.180.64.8
可以看出集群中有两个节点10.180.64.8和10.180.64.9,正是部署的2个节点。
查看当前集群的pod
root@cnsdev-paas-master:~#kubecfg list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
e473c35e-961d-11e4-bc28-fa163e8b5289 dockerfile/redis 10.180.64.9/ name=redisRunning
这里的redis你就当没看见,如果刚创建的集群这个时候是没有pod的,当然如果你是在gce或者aws上一键创建的,默认可能会看到kubernetes命名的pod,这是默认启动的状态监测的东东。
集群已经创建好了,那就来创建个tomcat的replicationController玩玩吧。有多种接口方式可以实现这个,这里选择json,需要写一个tomcat-controller.json的文件告诉kubernetes该怎么创建这个controller。当然文件的名字可以随意点,只要能看懂就行。tomca-controller.json大概长这个样子:
{
"id":"tomcatController",
"kind":"ReplicationController",
"apiVersion":"v1beta1",
"desiredState": {
"replicas": 2,
"replicaSelector":{"name":"tomcatCluster"},
"podTemplate":{
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "tomcat",
"containers": [{
"name": "tomcat",
"image":"tutum/tomcat",
"ports":[{
"containerPort":8080,"hostPort":80}
]
}]
}
},
"labels": {"name":"tomcatCluster"}}
},
"labels": {
"name":"tomcatCluster",
}
}
里面各项值的含义看完kubernetes实现分析之后就会明白了。写好文件之后就让kubernetes执行吧。
root@cnsdev-paas-master:/home/pod# kubecfg -ctomcat-pod.json create replicationControllers
如果告诉你success,那么可以查看下集群的controller
root@cnsdev-paas-master:/home/pod# kubecfg listreplicationControllers
Name Image(s) Selector Replicas
---------- ---------- ---------- ----------
redisController dockerfile/redis name=redis 1
tomcatController tutum/tomcat name=tomcatCluster 2
请无视redis,这时候看到tomcat的replicationController已经起来了,Replicas=2表示要在集群里面运行2个docker,docker运行的镜像就是tutum/tomcat了,如果你的minion上面没有这个镜像那么kubernetes就要去docker hub上为你下载了,如果本地有这个镜像那么kubernetes就直接在minion上为你运行2个tomcat的container(pod),来看看这一切是不是真的。
root@cnsdev-paas-master:/home/pod# kubecfg listpods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
643582db-97d1-11e4-aefa-fa163e8b5289 tutum/tomcat 10.180.64.9/ name=tomcatCluster Running
e473c35e-961d-11e4-bc28-fa163e8b5289 dockerfile/redis 10.180.64.9/ name=redis Running
64348fde-97d1-11e4-aefa-fa163e8b5289 tutum/tomcat 10.180.64.8/ name=tomcatCluster Running
更多的使用请看接口章节。
kubernetes集群部署的更多相关文章
- Kubernetes集群部署关键知识总结
Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...
- 基于Kubernetes集群部署skyDNS服务
目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...
- 为Kubernetes集群部署本地镜像仓库
目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...
- Kubernetes 集群部署(2) -- Etcd 集群
Kubenetes 集群部署规划: 192.168.137.81 Master 192.168.137.82 Node 192.168.137.83 Node 以下在 Master 节点操作. ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- kubernetes 集群部署
kubernetes 集群部署 环境JiaoJiao_Centos7-1(152.112) 192.168.152.112JiaoJiao_Centos7-2(152.113) 192.168.152 ...
- linux运维、架构之路-Kubernetes集群部署
一.kubernetes介绍 Kubernetes简称K8s,它是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部 ...
- Kubernetes集群部署DNS插件
准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...
随机推荐
- php大力力 [007节]php静态表量
2015-08-23 php大力力007. php静态表量 这里看一下高老师的视频讲解: 转帖: php中static静态类与static 静态变量用法区别 php中的静态变量的基本用法 转载 时间: ...
- html5zero 网站模板 影片素材
1. http://www.html5zero.com/ HTML5 Zero 收录来自各个网站的网站模版资源,支持响应式网页设计,部分能直接套用于 WordPress.Bootstrap 外,有 M ...
- fibonacci数列(二)_矩阵快速幂
描述 In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For exampl ...
- PHP访问REST API上传文件的解决方案
最近写的一个小功能需要通过rest方式上传文件,因此就在网上找了一些解决方案.接下来说明以下我采用的解决方案:我是利用curl来实现的,其中CURLOPT_POST的值为TRUE代表的是请求类型为PO ...
- [转]iOS游戏如何防御外挂及IAP破解
http://www.j1f3.com/news/game/21371.html 今年3月初写过一篇<iO平台游戏安全小议>,到现今已有7个月了.在这段时间内,iOS平台上的安全问题也产生 ...
- Weblogic项目部署及数据源配置
号线项目总结: weblogic项目配置: 把工作区放到磁盘上,建立weblogic域 在安装的weblogic服务器的开始项里选择 进入weblogic域的建立. 建立完域后用Myeclipse打开 ...
- 用 CSS 实现字符串截断
[要求]:如何用css实现字符串截断,超出约定长度后用缩略符...代替? ♪ 答: <html> <head> <meta charset="UTF-8&q ...
- JavaScript数据结构——链表
链表:存储有序的元素集合,但不同于数组,链表中的元素在内存中不是连续放置的.每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 好处:可以添加或移除任意项,它会按需扩容 ...
- day10_面向对象第五天
1.包(掌握) 1.概念(掌握) 包就是文件夹,用于区分相同的类名 2.声明格式 package 包名1.包名2-.; package:是个关键字3.带包的类的编译和运 ...
- 关于IE6浮动问题!
以下内容均为个人笔记:望批评指教! IE6下应尽量少使用float 而是 换用display:inline 父层使用text-align:text:效果会好些: 如果一组浮动元素 产生了浮动 最好 ...