k8s1.5.3集群测试之部署PODS实例

k8s1.5.3集群测试之部署PODS实例

安装部署集群环境参考

http://jerrymin.blog.51cto.com/3002256/1898243

测试docker容器参考Guestbook示例

1,下载镜像

本例中使用3个Docker镜像,下载地址为https://hub.docker.com/u/kubeguide/

[root@k8s-node1 ~]# docker pull kubeguide/guestbook-php-frontend

[root@k8s-node1 ~]# docker pull kubeguide/guestbook-redis-master

[root@k8s-node1 ~]# docker pull kubeguide/guestbook-redis-slave

查看镜像

[root@k8s-node1 ~]# docker images

REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE

docker.io/kubeguide/guestbook-php-frontend   latest              47ee16830e89        7 months ago        510 MB

docker.io/kubeguide/redis-master             latest              405a0b586f7e        18 months ago       419.1 MB

docker.io/kubeguide/guestbook-redis-slave    latest              e0c36a1fa372        18 months ago       109.5 MB

2,创建redis-mastr RC和Service

例子可参考Kubernetes实践指南第二章

[root@k8s-master guestbook]# ls

frontend-rc.yaml       redis-master-rc.yaml       redis-slave-rc.yaml

frontend-service.yaml  redis-master-service.yaml  redis-slave-service.yaml

首先为redis-master创建一个RC(副本控制器)

[root@k8s-master guestbook]# cat redis-master-rc.yaml 

apiVersion: v1

kind: ReplicationController

metadata:

  name: redis-master

  labels:

    name: redis-master

spec:

  replicas: 1

  selector:

    name: redis-master

  template:

    metadata:

      labels:

        name: redis-master

    spec:

      containers:

      - name: master

        image: kubeguide/redis-master

        ports:

        - containerPort: 6379

在master节点执行如下创建RC redis-master

[root@k8s-master guestbook]# kubectl create -f redis-master-rc.yaml

replicationcontroller "redis-master" created

[root@k8s-master guestbook]# kubectl get rc

NAME           DESIRED   CURRENT   READY     AGE

redis-master   1         1         0         8s

在master节点执行如下创建Service  redis-master

[root@k8s-master guestbook]# kubectl create -f redis-master-service.yaml 

service "redis-master" created

[root@k8s-master guestbook]# kubectl get svc

NAME           CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE

kubernetes     10.254.0.1     <none>        443/TCP    1d

redis-master   10.254.6.192   <none>        6379/TCP   12s

[root@k8s-master guestbook]# kubectl get pods -o wide

NAME                 READY     STATUS    RESTARTS   AGE       IP         NODE

redis-master-qg457   1/1       Running   0          1h        10.1.8.2   k8s-node2

可以看到Pod运行在k8s-node2节点上,node间可以通过tcp 10.1.8.2的6379端口访问redis-master

查看描述信息

[root@k8s-master guestbook]# kubectl describe pods  redis-master-qg457 

Name: redis-master-qg457

Namespace: default

Node: k8s-node2/172.17.3.8

Start Time: Thu, 16 Feb 2017 12:45:19 +0800

Labels: name=redis-master

Status: Running

IP: 10.1.8.2

Controllers: ReplicationController/redis-master

Containers:

  master:

    Container ID: docker://eb2e83544f80e54c3f864f1a4a1edd062b9bb94d979137509e41673f85d90160

    Image: kubeguide/redis-master

    Image ID: docker-pullable://docker.io/kubeguide/redis-master@sha256:e11eae36476b02a195693689f88a325b30540f5c15adbf531caaecceb65f5b4d

    Port: 6379/TCP

    State: Running

      Started: Thu, 16 Feb 2017 12:46:02 +0800

    Ready: True

    Restart Count: 0

    Volume Mounts: <none>

    Environment Variables: <none>

Conditions:

  Type Status

  Initialized True 

  Ready True 

  PodScheduled True 

No volumes.

QoS Class: BestEffort

Tolerations: <none>

No events.

在k8s-node2上确认docer进程

[root@k8s-node2 ~]# docker ps

CONTAINER ID        IMAGE                                                        COMMAND                  CREATED             STATUS              PORTS               NAMES

eb2e83544f80        kubeguide/redis-master                                       "redis-server /etc/re"   About an hour ago   Up About an hour                        k8s_master.dd7e04d1_redis-master-qg457_default_b755b620-f402-11e6-b4a4-c81f66d97bc3_de6042eb

26f1ae8f360c        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/pod"                   About an hour ago   Up About an hour                        k8s_POD.36030bb2_redis-master-qg457_default_b755b620-f402-11e6-b4a4-c81f66d97bc3_da1642b5

3,创建redis-slave RC和Service

[root@k8s-master guestbook]# kubectl create -f redis-slave-rc.yaml 

replicationcontroller "redis-slave" created

[root@k8s-master guestbook]# kubectl get rc

NAME           DESIRED   CURRENT   READY     AGE

redis-master   1         1         1         3h

redis-slave    2         2         2         1m

[root@k8s-master guestbook]# kubectl get pods -o wide

NAME                 READY     STATUS    RESTARTS   AGE       IP          NODE

redis-master-qg457   1/1       Running   0          3h        10.1.8.2    k8s-node2

redis-slave-40tjp    1/1       Running   0          1m        10.1.8.3    k8s-node2

redis-slave-fh4mg    1/1       Running   0          1m        10.1.89.2   k8s-node1

[root@k8s-master guestbook]# kubectl create -f redis-slave-service.yaml 

service "redis-slave" created

[root@k8s-master guestbook]# kubectl get services

NAME           CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE

kubernetes     10.254.0.1       <none>        443/TCP    1d

redis-master   10.254.6.192     <none>        6379/TCP   2h

redis-slave    10.254.183.118   <none>        6379/TCP   3m

查看主从状态

[root@k8s-master guestbook]#  kubectl exec redis-master-qg457 redis-cli info|grep role

role:master

[root@k8s-master guestbook]#  kubectl exec redis-slave-40tjp  redis-cli info|grep role

role:slave

[root@k8s-master guestbook]#  kubectl exec redis-slave-40tjp  redis-cli info|grep master

master_host:redis-master

master_port:6379

master_link_status:down

master_last_io_seconds_ago:-1

master_sync_in_progress:0

master_link_down_since_seconds:1487234901

master_repl_offset:0

进入修改hosts,由于没有kube-dns,所有slave都需要手动添加redis-master解析

[root@k8s-master guestbook]#  kubectl exec -ti redis-slave-40tjp -- bash

root@redis-slave-40tjp:/data#echo '10.1.8.2 redis-master' >> /etc/hosts

4,创建frontend RC和Service

[root@k8s-master guestbook]# kubectl create -f frontend-rc.yaml 

replicationcontroller "frontend" created

[root@k8s-master guestbook]# kubectl create -f frontend-service.yaml 

service "frontend" created

[root@k8s-master guestbook]# kubectl get rc

NAME           DESIRED   CURRENT   READY     AGE

frontend       3         3         2         14s

redis-master   1         1         1         4h

redis-slave    2         2         2         1h

[root@k8s-master guestbook]# kubectl get pods

NAME                 READY     STATUS    RESTARTS   AGE

frontend-jfz4c       1/1       Running   0          20s

frontend-lktm2       1/1       Running   0          20s

frontend-t8ctd       1/1       Running   0          20s

redis-master-qg457   1/1       Running   0          4h

redis-slave-40tjp    1/1       Running   0          1h

redis-slave-fh4mg    1/1       Running   0          1h

[root@k8s-master guestbook]# kubectl get service

NAME           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE

frontend       10.254.214.44    <nodes>       80:30001/TCP   2m

kubernetes     10.254.0.1       <none>        443/TCP        1d

redis-master   10.254.6.192     <none>        6379/TCP       3h

redis-slave    10.254.183.118   <none>        6379/TCP       1h

5,通过浏览器访问frontend页面

访问IP是node的IP加30001端口 ,本次测试应该是

http://172.17.3.7:30001或者http://172.17.3.8:30001目前是两个测试node

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle RAC failover 测试(连接时故障转移)

    Oracle RAC 集群最突出的表现就是高可用性,这些内容主要包括load balance以及failover,通过这些技术使得单点故障不影响客户端端...

882
来自专栏性能与架构

Docker容器镜像下载加速

image.png 直接下载Docker镜像时,由于某些原因,经常下载失败,即使连接成功也是极慢 好在 DaoCloud 提供Docker Hub Mirro...

6104
来自专栏云知识学习

Kubernetes1.10 HA高可用集群搭建文档

k8s-master01的keepalived.conf,配置文件有几点需要注意的,在下面有补充。

2.3K15
来自专栏码代码的陈同学

Spring Cloud之极端续租间隔时间的影响

本文基于某环境一个真实Case,它配置了非常极端的续租间隔时间。虽然知道服务注册的基本知识,但未深入了解过,正好基于这个Case学习下。

1626
来自专栏运维

k8s集群之kubernetes-dashboard和kube-dns组件部署安装

k8s集群之kubernetes-dashboard和kube-dns组件部署安装

2662
来自专栏乐沙弥的世界

再说 Oracle RAC services

        应用程序工作负载在Oracle 10g中可以被定为services,也称之为服务,能够在单实例中使用,也能够在RAC中单独使用和管理。因此整个数...

1204
来自专栏技术翻译

使用Kubernetes和Docker将Spring Boot和MongoDB作为容器部署

对于本教程,您将拥有一个Dockerized示例spring-boot应用程序,该应用程序与MongoDB通信以获取GET / POST REST API并部署...

2180
来自专栏数据和云

DBA必备技能:RAC 如何安装新主机识别老存储恢复数据库

编辑手记:在 DBA 的日常工作中,经常会遇到 RAC 的一个节点失效的情况,或者通过存储迁移主机,如何恢复环境,加入集群是 DBA 的必备技能。 ? 张大朋...

3375
来自专栏轻量级微服务

Kubernetes Service & LB & Networking :Ingress

简单服务路由,将 Node 的入站流量从 80 端口转发到服务 blog-anoyi, 查看 ingress 规则:

1322
来自专栏小狼的世界

使用kubectl创建部署

创建部署之后,可以看到容器已经运行了,但是默认情况下,容器只能内部互相访问,如果需要对外提供服务,有以下几种方式:

1170

扫码关注云+社区