标签:
由于pod的执行状态可动态变化(比方切换机器了、缩容过程中被终止了等)。所以訪问端不能以写死IP的方式去訪问该pod提供的服务。
service的引入旨在保证pod的动态变化对訪问端透明,訪问端仅仅须要知道service的地址。由service来提供代理。
通过replicationController。我们能够指定一个应用须要几份复制,Kubernetes将为每份复制创建一个pod,而且保证实际执行pod数量总是与该复制数量相等(比如。当前某个pod宕机时。自己主动创建新的pod来替换)。
使用演示样例
最后,让我们进入实战模式。这里跑一个最简单的单机演示样例(全部组件执行在一台机器上)。旨在打通基本流程。
搭建好开发环境
第一步,我们须要Kuberntes各组件的二进制可运行文件。有下面两种方式获取:
git clone https://github.com/GoogleCloudPlatform/kubernetes.git cd kubernetes/build ./release.sh
wget https://storage.googleapis.com/kubernetes/binaries.tar.gz
直接下载的方式不须要安装其它软件,但可能得不到最新的版本号。
wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz tar xvf etcd-v0.4.6-linux-amd64.tar.gz
cd etcd-v0.4.6-linux-amd64 ./etcd
./apiserver -address=127.0.0.1 -port=8080 -portal_net="172.0.0.0/16" -etcd_servers=http://127.0.0.1:4001 -machines=127.0.0.1 -v=3 -logtostderr=false -log_dir=./logscheduler
./scheduler -master 127.0.0.1:8080 -v=3 -logtostderr=false -log_dir=./log
./controller-manager -master 127.0.0.1:8080 -v=3 -logtostderr=false -log_dir=./logkubelet
./kubelet -address=127.0.0.1 -port=10250 -hostname_override=127.0.0.1 -etcd_servers=http://127.0.0.1:4001 -v=3 -logtostderr=false -log_dir=./log
{ "id": "redis", "desiredState": { "manifest": { "version": "v1beta1", "id": "redis", "containers": [{ "name": "redis", "image": "dockerfile/redis", "imagePullPolicy": "PullIfNotPresent", "ports": [{ "containerPort": 6379, "hostPort": 6379 }] }] } }, "labels": { "name": "redis" } }然后,通过命令行工具kubecfg提交:
./kubecfg -c redis.json create /pods提交完后,通过kubecfg查看pod状态:
# ./kubecfg list /pods ID Image(s) Host Labels Status ---------- ---------- ---------- ---------- ---------- redis dockerfile/redis 127.0.0.1/ name=redis Running
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ae83d1e4b1ec dockerfile/redis:latest "redis-server /etc/r 19 seconds ago Up 19 seconds k8s_redis.caa18858_redis.default.etcd_1414684622_1b43fe35
{ "id": "redisController", "apiVersion": "v1beta1", "kind": "ReplicationController", "desiredState": { "replicas": 1, "replicaSelector": {"name": "redis"}, "podTemplate": { "desiredState": { "manifest": { "version": "v1beta1", "id": "redisController", "containers": [{ "name": "redis", "image": "dockerfile/redis", "imagePullPolicy": "PullIfNotPresent", "ports": [{ "containerPort": 6379, "hostPort": 6379 }] }] } }, "labels": {"name": "redis"} }}, "labels": {"name": "redis"} }
./kubecfg -c redisController.json create /replicationControllers
# ./kubecfg list /replicationControllers ID Image(s) Selector Replicas ---------- ---------- ---------- ---------- redisController dockerfile/redis name=redis 1
版权声明:本文博客原创文章,博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/4631240.html