Aquesta és una revisió antiga del document
Getting started with Kubernetes
components
master
- 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
nodes
- 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
getting started
kubectl
kubectl version
kubectl logs --help
objects
- 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 centoskubectl describe pods example



