카타코더 k8s - Deploy Guestbook Web App Example

1 개요[ | ]

카타코더 Kubernetes - Deploy Guestbook Web App Example
카타코더 Kubernetes - Deploy Guestbook example on Kubernetes
카타코더 Kubernetes
# 🔗 제목
카타코더 Kubernetes/1 e
🡵 카타코더 k8s - Launch A Single Node Cluster
🡵 카타코더 k8s - Launch a multi-node cluster using Kubeadm
🡵 카타코더 k8s - Deploy Containers Using Kubectl
🡵 카타코더 k8s - Deploy Containers Using YAML
🡵 카타코더 k8s - Deploy Guestbook Web App Example
🡵 카타코더 k8s - Networking Introduction
🡵 카타코더 k8s - Create Ingress Routing
🡵 카타코더 k8s - Liveness and Readiness Healthchecks
🡵 카타코더 k8s - Getting Started With CRI-O and Kubeadm
🡵 카타코더 k8s - Running Stateful Services on Kubernetes

2 Start Kubernetes[ | ]

master:~$ kubectl cluster-info
Kubernetes master is running at https://172.17.0.29:6443
KubeDNS is running at https://172.17.0.29:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
master:~$ kubectl get nodes
NAME      STATUS    ROLES     AGE       VERSION
master    Ready     master    4m        v1.11.3
node01    Ready     <none>    4m        v1.11.3

3 Redis Master Controller[ | ]

master:~$ cat 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:3.0.7-alpine
        ports:
        - containerPort: 6379
master:~$ kubectl create -f redis-master-controller.yaml
replicationcontroller/redis-master created
master:~$ kubectl get rc
NAME           DESIRED   CURRENT   READY     AGE
redis-master   1         1         1         10s
master:~$ kubectl get pods
NAME                 READY     STATUS    RESTARTS   AGE
redis-master-p8bv9   1/1       Running   0          20s

4 Redis Master Service[ | ]

master:~$ cat 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
master:~$ kubectl create -f redis-master-service.yaml
service/redis-master created
master:~$ kubectl get services
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes     ClusterIP   10.96.0.1      <none>        443/TCP    7m
redis-master   ClusterIP   10.99.207.58   <none>        6379/TCP   29s
master:~$ kubectl describe services redis-master
Name:              redis-master
Namespace:         default
Labels:            name=redis-master
Annotations:       <none>
Selector:          name=redis-master
Type:              ClusterIP
IP:                10.99.207.58
Port:              <unset>  6379/TCP
TargetPort:        6379/TCP
Endpoints:         10.32.0.2:6379
Session Affinity:  None
Events:            <none>

5 Replication Slave Pods[ | ]

master:~$ cat 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: gcr.io/google_samples/gb-redisslave:v1
        env:
        - name: GET_HOSTS_FROM
          value: dns
          # If your cluster config does not include a dns service, thento
          # instead access an environment variable to find the master
          # service's host, comment out the 'value: dns' line above, and
          # uncomment the line below.
          # value: env
        ports:
        - containerPort: 6379
master:~$ kubectl create -f redis-slave-controller.yaml
replicationcontroller/redis-slave created
master:~$ kubectl get rc
NAME           DESIRED   CURRENT   READY     AGE
redis-master   1         1         1         3m
redis-slave    2         2         2         6s

6 Redis Slave Service[ | ]

master:~$ cat 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
master:~$ kubectl create -f redis-slave-service.yaml
service/redis-slave created
master:~$ kubectl get services
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes     ClusterIP   10.96.0.1      <none>        443/TCP    9m
redis-master   ClusterIP   10.99.207.58   <none>        6379/TCP   2m
redis-slave    ClusterIP   10.98.141.67   <none>        6379/TCP   7s

7 Frontend Replicated Pods[ | ]

master:~$ cat 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: gcr.io/google_samples/gb-frontend:v3
        env:
        - name: GET_HOSTS_FROM
          value: dns
          # If your cluster config does not include a dns service, thento
          # instead access environment variables to find service host
          # info, comment out the 'value: dns' line above, and uncomment the
          # line below.
          # value: env
        ports:
        - containerPort: 80
master:~$ kubectl create -f frontend-controller.yaml
replicationcontroller/frontend created
master:~$ kubectl get rc
NAME           DESIRED   CURRENT   READY     AGE
frontend       3         3         3         9s
redis-master   1         1         1         5m
redis-slave    2         2         2         1m
master:~$ kubectl get pods
NAME                 READY     STATUS    RESTARTS   AGE
frontend-2mvf4       1/1       Running   0          17s
frontend-9rhzx       1/1       Running   0          17s
frontend-k5nnv       1/1       Running   0          17s
redis-master-p8bv9   1/1       Running   0          5m
redis-slave-d2wfk    1/1       Running   0          1m
redis-slave-vtsf9    1/1       Running   0          1m

8 Guestbook Frontend Service[ | ]

master:~$ cat frontend-service.yaml
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
      nodePort: 30080
  selector:
    name: frontend
master:~$ kubectl create -f frontend-service.yaml
service/frontend created
master:~$ kubectl get services
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
frontend       NodePort    10.96.6.37     <none>        80:30080/TCP   6s
kubernetes     ClusterIP   10.96.0.1      <none>        443/TCP        11m
redis-master   ClusterIP   10.99.207.58   <none>        6379/TCP       3m
redis-slave    ClusterIP   10.98.141.67   <none>        6379/TCP       1m

9 Access Guestbook Frontend[ | ]

master:~$ kubectl get pods
NAME                 READY     STATUS    RESTARTS   AGE
frontend-2mvf4       1/1       Running   0          1m
frontend-9rhzx       1/1       Running   0          1m
frontend-k5nnv       1/1       Running   0          1m
redis-master-p8bv9   1/1       Running   0          6m
redis-slave-d2wfk    1/1       Running   0          2m
redis-slave-vtsf9    1/1       Running   0          2m
master:~$ kubectl describe service frontend | grep NodePort
Type:                     NodePort
NodePort:                 <unset>  30080/TCP
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}