Think Twice

Memorandum

CentOS7 minimal で Kubernetes ~part 4~

GuestBookを試す。github.com


redis master を起動

redis-master-controller.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: redis
        ports:
        - containerPort: 6379
controller 起動
$ kubectl create -f redis-master-controller.yaml
replication controller  の確認
$ kubectl get rc
CONTROLLER     CONTAINER(S)   IMAGE(S)                                    SELECTOR            REPLICAS
redis-master   master         redis                                       name=redis-master   1
pod の確認
$ kubectl get pods
NAME                 READY     STATUS    RESTARTS   AGE
redis-master-n2tok   1/1       Running   0          46m

redis slave の起動

read only のredisを作成する

redis-slave-controller.yaml の作成
apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-slave
  labels:
    name: redis-slave
spec:
  replicas: 2
  selector:
    name: redis-slave
  template:
    metadata:
      labels:
        name: redis-slave
    spec:
      containers:
      - name: worker
        image: kubernetes/redis-slave:v2
        ports:
        - containerPort: 6379
controller 起動
$ kubectl create -f redis-slave-controller.yaml

redis master,slave のserviceを起動

redis-master-service.yaml の作成
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    name: redis-master
spec:
  ports:
    # the port that this service should serve on
  - port: 6379
    targetPort: 6379
  selector:
    name: redis-master
service起動
$ kubectl create -f redis-master-service.yaml
redis-slave-service.yaml の作成
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    name: redis-slave
spec:
  ports:
    # the port that this service should serve on
  - port: 6379
  selector:
    name: redis-slave
service起動
$ kubectl create -f redis-slave-service.yaml

Frontend の pod 作成

frontend-controller.yaml の作成
apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  replicas: 3
  selector:
    name: frontend
  template:
    metadata:
      labels:
        name: frontend
    spec:
      containers:
      - name: php-redis
        image: kubernetes/example-guestbook-php-redis:v2
        ports:
        - containerPort: 80
$ kubectl create -f frontend-controller.yaml
frontend-service.yaml の作成

今回はLoadBalancerがないので、
外部ネットワークに公開するために

type: NodePort

を指定
Services in Kubernetesを参考に。

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  # if your cluster supports it, uncomment the following to automatically create
  # an external load-balanced IP for the frontend service.
#  type: LoadBalancer
  type: NodePort
  ports:
    # the port that this service should serve on
    - port: 80
      targetport: 80
      protocol: TCP
  selector:
    name: frontend
Frontend Service の起動
$ kubectl create -f frontend-service.yaml
You have exposed your service on an external port on all nodes in your
cluster.  If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:30621) to serve traffic.

See http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md for more details.
services/frontend

http://192.168.1.18:30621
f:id:mix-juice001:20150817185543p:plain