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:45] – [otros] 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 65: Línia 66:
     * istio     * istio
     * kong = capa + plugin ram lua + nginx     * kong = capa + plugin ram lua + nginx
-  * katacoda + 
-    * [[https://www.katacoda.com/courses/kubernetes/launch-single-node-cluster]] +=== katacoda 
-      * ''minikube version'' +==== lab1 
-      * ''minikube start'' +  * [[https://www.katacoda.com/courses/kubernetes/launch-single-node-cluster]] 
-      * ''kubectl cluster-info'' +    * ''minikube version'' 
-      * ''kubectl get nodes'' +    * ''minikube start'' 
-      * ''kubectl run first-deployment --image=katacoda/docker-http-server --port=80'' -> ''kubectl create'' +    * ''kubectl cluster-info'' 
-      * ''kubectl expose deployment first-deployment --port=80 --type=NodePort'' +    * ''kubectl get nodes'' 
-      * ''kubectl describe deployments'' +    * ''kubectl run first-deployment --image=katacoda/docker-http-server --port=80'' -> ''kubectl create'' 
-      * ''export PORT=$(kubectl get svc first-deployment -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}'); echo "Accessing host01:$PORT"; curl host01:$PORT'' +    * ''kubectl expose deployment first-deployment --port=80 --type=NodePort'' 
-    * [[https://www.katacoda.com/courses/kubernetes/getting-started-with-kubeadm]] +    * ''kubectl describe deployments'' 
-      * kubeadm : aprovisionamiento de nodos +    * ''export PORT=$(kubectl get svc first-deployment -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}'); echo "Accessing host01:$PORT"; curl host01:$PORT'' 
-      * ''kubeadm init --token=102952.1a7dd4cc8d1f4cc5 --kubernetes-version $(kubeadm version -o short)'' <- en producción no pasar el token para se genere + 
-      * ''sudo cp /etc/kubernetes/admin.conf $HOME/; sudo chown $(id -u):$(id -g) $HOME/admin.conf; export KUBECONFIG=$HOME/admin.conf'' : copia certificados y configuración en el $HOME del usuario en curso para su uso +==== lab2 
-      * ''kubeadm token list'' +  * [[https://www.katacoda.com/courses/kubernetes/getting-started-with-kubeadm]] 
-      * ''kubeadm join --discovery-token-unsafe-skip-ca-verification --token=102952.1a7dd4cc8d1f4cc5 172.17.0.44:6443'' +    * kubeadm : aprovisionamiento de nodos 
-        * **--discovery-token-unsafe-skip-ca-verification** : bybass Discovery Token verification +    * ''kubeadm init --token=102952.1a7dd4cc8d1f4cc5 --kubernetes-version $(kubeadm version -o short)'' <- en producción no pasar el token para se genere 
-      * ''kubectl get nodes'' (on master) +    * ''sudo cp /etc/kubernetes/admin.conf $HOME/; sudo chown $(id -u):$(id -g) $HOME/admin.conf; export KUBECONFIG=$HOME/admin.conf'' : copia certificados y configuración en el $HOME del usuario en curso para su uso 
-      * CNI: Container Network Interface : [[https://kubernetes.io/docs/admin/addons/|networks providers]] +    * ''kubeadm token list'' 
-      * ''kubectl apply -f /opt/weave-kube'' : deploy del WeaveWorks +    * ''kubeadm join --discovery-token-unsafe-skip-ca-verification --token=102952.1a7dd4cc8d1f4cc5 172.17.0.44:6443'' 
-        * [[https://www.weave.works/docs/net/latest/kube-addon/]] +      * **--discovery-token-unsafe-skip-ca-verification** : bybass Discovery Token verification 
-      * ''kubectl get pod -n kube-system'' +    * ''kubectl get nodes'' (on master) 
-      * ''kubectl create deployment http --image=katacoda/docker-http-server:latest'' +    * CNI: Container Network Interface : [[https://kubernetes.io/docs/admin/addons/|networks providers]] 
-      * ''kubectl get pods'' +    * ''kubectl apply -f /opt/weave-kube'' : deploy del WeaveWorks 
-      * ''docker ps | grep docker-http-server'' (on node) +      * [[https://www.weave.works/docs/net/latest/kube-addon/]] 
-      * ''kubectl apply -f dashboard.yaml'' +    * ''kubectl get pod -n kube-system'' 
-      * ''kubectl get pods -n kube-system'' +    * ''kubectl create deployment http --image=katacoda/docker-http-server:latest'' 
-      * Creacion **ServiceAccount**:<code yaml>cat <<EOF | kubectl create -f - +    * ''kubectl get pods'' 
 +    * ''docker ps | grep docker-http-server'' (on node) 
 +    * ''kubectl apply -f dashboard.yaml'' 
 +    * ''kubectl get pods -n kube-system'' 
 +    * Creacion **ServiceAccount**:<code yaml>cat <<EOF | kubectl create -f - 
 apiVersion: v1 apiVersion: v1
 kind: ServiceAccount kind: ServiceAccount
Línia 112: Línia 117:
   namespace: kube-system   namespace: kube-system
 EOF</code> EOF</code>
-      * get token: ''kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk "{print $1}")'' +    * get token: ''kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk "{print $1}")'' 
-      * ''kubeadm token list''  +    * ''kubeadm token list''  
-    * [[https://www.katacoda.com/courses/kubernetes/kubectl-run-containers]] + 
-      * ''minikube start'' +==== lab3 
-      * ''kubectl get nodes'' +  * [[https://www.katacoda.com/courses/kubernetes/kubectl-run-containers]] 
-      * ''kubectl run http --image=katacoda/docker-http-server:latest --replicas=1'' +    * ''minikube start'' 
-      * ''kubectl get deployments'' +    * ''kubectl get nodes'' 
-      * ''kubectl describe deployment http'' +    * ''kubectl run http --image=katacoda/docker-http-server:latest --replicas=1'' 
-      * ''kubectl expose deployment http --external-ip="172.17.0.28" --port=8000 --target-port=80'' +    * ''kubectl get deployments'' 
-      * en un solo comando: ''kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001'' -> expone el puerto a nivel de Docker, por lo tanto no se muestra así: ''kubectl get svc'', si no, así: ''docker ps | grep httpexposed'' +    * ''kubectl describe deployment http'' 
-      * escalar contenedores: +    * ''kubectl expose deployment http --external-ip="172.17.0.28" --port=8000 --target-port=80'' 
-        * ''kubectl scale --replicas=3 deployment http'' +    * en un solo comando: ''kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001'' -> expone el puerto a nivel de Docker, por lo tanto no se muestra así: ''kubectl get svc'', si no, así: ''docker ps | grep httpexposed'' 
-          * cada nuevo pod creado se añade al LB +    * escalar contenedores: 
-        * ''kubectl get pods'' : lista de pods en ejecución +      * ''kubectl scale --replicas=3 deployment http'' 
-        * ''kubectl describe svc http'' : muestra, entre otras cosas, los **endpoints** +        * cada nuevo pod creado se añade al LB 
-    * [[https://www.katacoda.com/courses/kubernetes/creating-kubernetes-yaml-definitions]] +      * ''kubectl get pods'' : lista de pods en ejecución 
-      * <code yaml; deployment.yaml>apiVersion: extensions/v1beta1+      * ''kubectl describe svc http'' : muestra, entre otras cosas, los **endpoints** 
 + 
 +==== lab4 
 +  * [[https://www.katacoda.com/courses/kubernetes/creating-kubernetes-yaml-definitions]] 
 +    * <code yaml; deployment.yaml>apiVersion: extensions/v1beta1
 kind: Deployment kind: Deployment
 metadata: metadata:
Línia 144: Línia 153:
         ports:         ports:
         - containerPort: 80</code>         - containerPort: 80</code>
-       * ''kubectl create -f deployment.yaml'' +     * ''kubectl create -f deployment.yaml'' 
-       * ''kubectl get deployment'' : muestra todos los deploys +     * ''kubectl get deployment'' : muestra todos los deploys 
-       * ''kubectl describe deployment webapp1'' : descripción de un deploy concreto +     * ''kubectl describe deployment webapp1'' : descripción de un deploy concreto 
-       * <code yaml; service.yaml>apiVersion: v1+     * <code yaml; service.yaml>apiVersion: v1
 kind: Service kind: Service
 metadata: metadata:
Línia 160: Línia 169:
   selector:   selector:
     app: webapp1</code>     app: webapp1</code>
-       * ''kubectl create -f service.yaml'' +     * ''kubectl create -f service.yaml'' 
-       * ''kubectl get svc'' +     * ''kubectl get svc'' 
-       * ''kubectl describe svc webapp1-svc'' +     * ''kubectl describe svc webapp1-svc'' 
-       * (modificación de las réplicas del deployment.yaml) -> ''kubectl apply -f deployment.yaml'' +     * (modificación de las réplicas del deployment.yaml) -> ''kubectl apply -f deployment.yaml'' 
-       * ''kubectl get deployment'', ''kubectl get pods''+     * ''kubectl get deployment'', ''kubectl get pods''
  
 +==== 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:
Línia 171: Línia 335:
     * internationalization = i18n     * internationalization = i18n
     * localization = l10n     * localization = l10n
 +    * [[https://wiki.mageia.org/en/What_is_i18n,_what_is_l10n]]
   * minikube   * minikube
   * komposer (swarm - k8s)   * komposer (swarm - k8s)
   * tibco   * tibco
  • info/cursos/pue/devops/sesion8.1552214710.txt.gz
  • Darrera modificació: 10/03/2019 03:45
  • per mate