info:libros:devops-kubernetes:cap3

Aquesta és una revisió antiga del document


Getting started with Kubernetes

  • api Server
    • kube-apiserver
    • RESTful API
  • Controller Manager
    • kube-controller-manager
    • observa los cambios en la API y mantiene el cluster en el estado deseado
    • deployment controller: se asegura que el deployment se ejecuta en el número establecido de contenedores
    • node controller: responde y desaloja el pod cuando los nodos se caen
    • endpoint controller: relaciones entre pods y servicios
    • service account & toker controller: crear cuenta por defecto y tokens de acceso
  • Scheduler
    • kube-scheduler
    • determina que nodos son los mejores candidaros para ejecutar los pods
    • no solo se basa en el uso de los recuros, (más adelante)
  • etcd:
    • base de datos distribuida key-value
    • todos los objetos de la RESTful API se guardan aquí
    • etcd se encarga de guardar y replicar los datos

  • kubelet
    • es el proceso principal
    • reporta la actividad del nodo a kube-apiserver periodicamente
  • proxy
    • kube-proxy
    • enruta a través del pod balanceador y los pods
    • enruta desde internet a los servicios
    • 3 modos:
      • userspace:
      • iptables:
      • ipvs:
  • docker

  • kubectl version
  • kubectl logs --help
  • Namespaces
    • permite implementar el aislamiento entre múltiples clusters virtuales
    • objetos de diferentes namespaces no se ven entre ellos
    • ciertos recursos genéricos no pertenecen a ningún namespace
    • por defecto, existen 3 namespaces:
      • default
      • kube-system: almacenar objetos creados por el sistema kubernetes
      • kube-public: visible por todos los usuarios
    • apiVersion: v1
      kind: Namespace
      metadata:
      name: project1
    • kubectl create -f 3-2-1_ns.yaml
    •  kubectl get [namespaces|ns]
    • kubectl run nginx --image=nginx:1.12.0 --replicas=2 --port=80 --namespace=project1
    • kubectl get pods --namespace=project1
  • Name
    • único en cada namespace
    • usa este nombre como parte de la URL de acceso al recurso
    • menor a 254c, letras minúsculas, números, guiones y puntos
    • kubernetes también le asigna un UID
  • Labels y selector
    • asigna etiquetas arbitrarias a los objetos
    • labels:
        $key1: $value1
        $key2: $value2
    • se pueden filtrar las etiquetas con selectores
    • selector:
        matchLabels:
          $key1: $value1
        matchExpressions:
        - {key: $key2, operator: In, values: [$value1, $value2]}
  • Annotations
    • al igual que los tags, usado para especificar metadatos no identificables
    • almacenar configuración
  • Pods
    • miníma unidad deployable
    • puede contener uno o varios contenedores (sidecar containers, como por ejemplo el proxy de istio)
    • los contenedores de un mismo pod comparten contexto (en el mismo nodo), y por lo tanto red y volúmenes compartidos
    •  kubectl explain pods
    • ejemplo, sin uso práctico, de 2 contenedores en 1 pod:
      // an example for creating co-located and co-scheduled container by pod
      apiVersion: v1
      kind: Pod
      metadata:
        name: example
      spec:
        containers:
        - name: web
          image: nginx
        - name: centos
          image: centos
          command: ["/bin/sh", "-c", "while : ;do curl http://localhost:80/; sleep 10; done"]

  • kubectl create -f 3-2-1_pod.yaml
  • kubectl logs example -c centos
  • kubectl describe pods example
  • info/libros/devops-kubernetes/cap3.1586801262.txt.gz
  • Darrera modificació: 13/04/2020 11:07
  • per mate