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 | ||