"카타코더 k8s - Deploy Guestbook Web App Example"의 두 판 사이의 차이

(새 문서: ==개요== ;카타코더 Kubernetes - ;카타코더 Kubernetes - {{카타코더|Kubernetes|1}} ==== <source lang='console'> </source> <source lang='console'> </source>)
 
 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;카타코더 Kubernetes -  
;카타코더 Kubernetes - Deploy Guestbook Web App Example
;카타코더 Kubernetes -  
;카타코더 Kubernetes - Deploy Guestbook example on Kubernetes
{{카타코더|Kubernetes|1}}
{{카타코더|Kubernetes|1}}


====
==Start Kubernetes==
<source lang='console'>
<source lang='console'>
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'.
</source>
<source lang='console'>
master:~$ kubectl get nodes
NAME      STATUS    ROLES    AGE      VERSION
master    Ready    master    4m        v1.11.3
node01    Ready    <none>    4m        v1.11.3
</source>
==Redis Master Controller==
<source lang='console'>
master:~$ cat redis-master-controller.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f redis-master-controller.yaml
replicationcontroller/redis-master created
</source>
<source lang='console'>
master:~$ kubectl get rc
NAME          DESIRED  CURRENT  READY    AGE
redis-master  1        1        1        10s
</source>
<source lang='console'>
master:~$ kubectl get pods
NAME                READY    STATUS    RESTARTS  AGE
redis-master-p8bv9  1/1      Running  0          20s
</source>
==Redis Master Service==
<source lang='console'>
master:~$ cat redis-master-service.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f redis-master-service.yaml
service/redis-master created
</source>
<source lang='console'>
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
</source>
<source lang='console'>
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>
</source>
==Replication Slave Pods==
<source lang='console'>
master:~$ cat redis-slave-controller.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f redis-slave-controller.yaml
replicationcontroller/redis-slave created
</source>
<source lang='console'>
master:~$ kubectl get rc
NAME          DESIRED  CURRENT  READY    AGE
redis-master  1        1        1        3m
redis-slave    2        2        2        6s
</source>
==Redis Slave Service==
<source lang='console'>
master:~$ cat redis-slave-service.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f redis-slave-service.yaml
service/redis-slave created
</source>
<source lang='console'>
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
</source>
==Frontend Replicated Pods==
<source lang='console'>
master:~$ cat frontend-controller.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f frontend-controller.yaml
replicationcontroller/frontend created
</source>
<source lang='console'>
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
</source>
<source lang='console'>
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
</source>
==Guestbook Frontend Service==
<source lang='console'>
master:~$ cat frontend-service.yaml
</source>
<source lang='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
</source>
<source lang='console'>
master:~$ kubectl create -f frontend-service.yaml
service/frontend created
</source>
<source lang='console'>
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
</source>
==Access Guestbook Frontend==
<source lang='console'>
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
</source>
</source>
<source lang='console'>
<source lang='console'>
master:~$ kubectl describe service frontend | grep NodePort
Type:                    NodePort
NodePort:                <unset>  30080/TCP
</source>
</source>

2019년 3월 24일 (일) 00:51 기준 최신판

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 }}