Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Següent revisió | Revisió prèvia | ||
info:libros:devops-kubernetes:cap3-2 [13/04/2020 13:47] – creat mate | info:libros:devops-kubernetes:cap3-2 [15/04/2020 07:30] (actual) – [Namespaces] mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | = Getting started with Kubernetes: | + | = Getting started with Kubernetes: |
+ | == kubectl | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | |||
+ | == 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: | ||
+ | * kube-public: | ||
+ | * <code yaml; 3-2-1_ns.yaml> | ||
+ | kind: Namespace | ||
+ | metadata: | ||
+ | name: project1 | ||
+ | </ | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | |||
+ | === Name | ||
+ | * único en cada namespace | ||
+ | * usa este nombre como parte de la URL de acceso al recurso | ||
+ | * menor a 254c, letras minúsculas, | ||
+ | * kubernetes también le asigna un UID | ||
+ | |||
+ | === Labels y selector | ||
+ | * asigna etiquetas arbitrarias a los objetos | ||
+ | * <code yaml> | ||
+ | $key1: $value1 | ||
+ | $key2: $value2</ | ||
+ | * se pueden filtrar las etiquetas con selectores | ||
+ | * <code yaml> | ||
+ | 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 | ||
+ | * <code bash> | ||
+ | * ejemplo, sin uso práctico, de 2 contenedores en 1 pod:< | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: example | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: web | ||
+ | image: nginx | ||
+ | - name: centos | ||
+ | image: centos | ||
+ | command: ["/ | ||
+ | </ | ||
+ | {{ : | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * un pod está asociado con un **service account** que provee una identidad para los procesos que ejecutan el pod. Lo controla el service account y el token controllers en el API Server | ||
+ | * montará un volumen de solo lectura para cada contenedor en la ruta **/ | ||
+ | * listar los service account:< | ||
+ | |||
+ | === ReplicaSet: | ||
+ | * vigila que el número de pods (replica pods) están siempre bien y en ejecución en el cluster | ||
+ | * ejemplo RS:<code yaml; 3-2-2_rs.yml>// | ||
+ | # cat 3-2-2_rs.yaml | ||
+ | apiVersion: apps/v1 | ||
+ | kind: ReplicaSet | ||
+ | metadata: | ||
+ | name: nginx | ||
+ | spec: | ||
+ | replicas: 2 | ||
+ | selector: | ||
+ | matchLabels: | ||
+ | project: chapter3 | ||
+ | matchExpressions: | ||
+ | - {key: version, operator: In, values: [" | ||
+ | template: | ||
+ | metadata: | ||
+ | name: nginx | ||
+ | labels: | ||
+ | project: chapter3 | ||
+ | service: web | ||
+ | version: " | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: nginx | ||
+ | image: nginx | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | </ | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | * si creásemos un pod a mano que cumpliese con los criterios del **replicaSet** (label version: | ||
+ | * <code yaml; 3-2-2_rs_self_created_pod.yaml> | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: our-nginx | ||
+ | labels: | ||
+ | project: chapter3 | ||
+ | service: web | ||
+ | version: " | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: nginx | ||
+ | image: nginx | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | </ | ||
+ | * <code bash> | ||
+ | * podemos modificar el número de réplicas con:< | ||
+ | * <code bash> | ||
+ | * <code bash> | ||
+ | |||
+ | === Deployments | ||
+ | * deploy pods | ||
+ | * rolling updates | ||
+ | * roll back pods y replicaSets | ||
+ | * realizar un deployment:< | ||
+ | * {{ : | ||
+ | * exponer puerto 80 al service port 80: <code bash> | ||
+ | * <code yaml; 3-2-3_deployments.yaml> | ||
+ | apiVersion: apps/v1 | ||
+ | kind: Deployment | ||
+ | metadata: | ||
+ | name: nginx | ||
+ | spec: | ||
+ | replicas: 2 | ||
+ | template: | ||
+ | metadata: | ||
+ | labels: | ||
+ | run: nginx | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: nginx | ||
+ | image: nginx: | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | --- | ||
+ | kind: Service | ||
+ | apiVersion: v1 | ||
+ | metadata: | ||
+ | name: nginx | ||
+ | labels: | ||
+ | run: nginx | ||
+ | spec: | ||
+ | selector: | ||
+ | run: nginx | ||
+ | ports: | ||
+ | - protocol: TCP | ||
+ | port: 80 | ||
+ | targetPort: 80 | ||
+ | name: http | ||
+ | </ | ||
+ | * <code bash> | ||
+ | |||
+ | pag:113 |