Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:cursos:pue:devops:sesion8 [10/03/2019 03:50] – [labs] mateinfo:cursos:pue:devops:sesion8 [08/04/2020 06:57] (actual) – [Sesión 8 : kubernetes] mate
Línia 1: Línia 1:
 = Sesión 8 : kubernetes = Sesión 8 : kubernetes
 +{{tag>devops cursos k8s}}
 == katacoda == katacoda
   * [[https://www.katacoda.com/]]   * [[https://www.katacoda.com/]]
Línia 175: Línia 176:
  
 ==== lab5 ==== lab5
 +  * [[https://www.katacoda.com/courses/kubernetes/guestbook]]
 +    * [[https://github.com/katacoda/kubernetes-guestbook.git]]
 +    * arrancan un cluster k8s con 1 master y 1 nodo:
 +      * API
 +      * Master
 +      * Proxy
 +      * DNS
 +    * k8s service deployment:
 +      * replication controller: cuantas instancias, la imagen docker a usar, el nombre que lo identifica (más otras de configuración y discovery)
 +        * ''kubectl create -f redis-master-controller.yaml''
 +        * <code yaml; 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</code>
 +      * service:
 +        * load balancer que reenvia el tráfico a 1 o más contenedores (aunque estén en nodos diferentes)
 +        * comunica dentro del clustes, rara vez expone puertos al exterior
 +        * para comunicarnos desde fuera del cluster se recomienda el uso de un LoadBalancer
 +        * ''kubectl create -f redis-master-service.yaml''
 +        * <code yaml; 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</code>
 +        * ''kubectl get services''
 +        * ''kubectl describe services redis-master''
 +    * replication slave pods
 +      * [[http://redis.io/topics/replication]]
 +      * uso de variables de entorno para el descubrimiento de otros PODs
 +      * ''kubectl create -f redis-slave-controller.yaml''
 +      * <code yaml; 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, then to
 +          # 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</code>
 +      * ''kubectl get rc''
 +    * service redis slaves
 +      * ''kubectl create -f redis-slave-service.yaml''
 +      * <code 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</code>
 +      * ''kubectl get services''
 +      * **PQ NO TIENE UN TARGETPORT COMO EL REDIS-MASTER-SERVICE.YAML**
 +    * deploy de la web app
 +      * ''kubectl create -f frontend-controller.yaml''
 +      * <code yaml; 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, then to
 +          # 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</code>
 +      * ''kubectl get rc''
 +      * ''kubectl get pods''
 +    * hacemos accesible el frontend
 +      * NodePort: expone un puerto
 +      * ''kubectl create -f frontend-service.yaml''
 +      * <code yaml; 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</code>
 +      * ''kubectl get services''
 +    * estado de los pods: ''kubectl get services''
 +    * por si no hemos asignado el puerto y queremos ver cual ha sido asignado: ''kubectl describe service frontend | grep NodePort''
 == otros == otros
   * abreviaturas:   * abreviaturas:
  • info/cursos/pue/devops/sesion8.1552215050.txt.gz
  • Darrera modificació: 10/03/2019 03:50
  • per mate