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ó

Següent revisió
Revisió prèvia
info:libros:devops-kubernetes:cap3-2 [13/04/2020 13:47] – creat mateinfo: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: objects 
 +== kubectl 
 +  * <code bash>kubectl version</code> 
 +  * <code bash>kubectl logs --help</code> 
 + 
 +== 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 
 +  * <code yaml; 3-2-1_ns.yaml>apiVersion: v1 
 +kind: Namespace 
 +metadata: 
 +name: project1 
 +</code> 
 +  * <code bash>kubectl create -f 3-2-1_ns.yaml</code> 
 +  * <code bash>kubectl get [namespaces|ns]</code> 
 +  * <code bash>kubectl run nginx --image=nginx:1.12.0 --replicas=2 --port=80 --namespace=project1</code> 
 +  * <code bash>kubectl get pods --namespace=project1</code> 
 + 
 +=== 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 
 +  * <code yaml>labels: 
 +  $key1: $value1 
 +  $key2: $value2</code> 
 +  * se pueden filtrar las etiquetas con selectores 
 +  * <code yaml>selector: 
 +  matchLabels: 
 +    $key1: $value1 
 +  matchExpressions: 
 +  - {key: $key2, operator: In, values: [$value1, $value2]} 
 +</code> 
 + 
 +=== 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>kubectl explain pods</code> 
 +  * ejemplo, sin uso práctico, de 2 contenedores en 1 pod:<code yaml>// 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"
 +</code> 
 +{{ :info:libros:devops-kubernetes:pasted:20200413-110331.png }} 
 +  * <code bash>kubectl create -f 3-2-1_pod.yaml</code> 
 +  * <code bash>kubectl logs example -c centos</code> 
 +  * <code bash>kubectl describe pods example</code> 
 +  * 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 **/var/run/secrets/kubernetes.io/serviceaccount** con el contenido del token al API access 
 +  * listar los service account:<code bash>kubectl get serviceaccounts</code> 
 + 
 +=== 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>// an example for RS spec 
 +# 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: ["0.1", "0.2"]} 
 +  template: 
 +    metadata: 
 +      name: nginx 
 +      labels: 
 +        project: chapter3 
 +        service: web 
 +        version: "0.1" 
 +    spec: 
 +      containers: 
 +        - name: nginx 
 +          image: nginx 
 +          ports: 
 +          - containerPort: 80 
 +</code> 
 +  * <code bash>kubectl create -f 3-2-2_rs.yml</code> 
 +  * <code bash>kubectl get rs</code> 
 +  * <code bash>kubectl get pods</code> 
 +  * si creásemos un pod a mano que cumpliese con los criterios del **replicaSet** (label version:0.1), detectará que hay uno de más y lo eliminará: 
 +    * <code yaml; 3-2-2_rs_self_created_pod.yaml> 
 +apiVersion: v1 
 +kind: Pod 
 +metadata: 
 +  name: our-nginx 
 +  labels: 
 +    project: chapter3 
 +    service: web 
 +    version: "0.1" 
 +spec: 
 +  containers: 
 +    - name: nginx 
 +      image: nginx 
 +      ports: 
 +      - containerPort: 80 
 +</code> 
 +    * <code bash>kubectl create -f 3-2-2_rs_self_created_pod.yaml</code> 
 +  * podemos modificar el número de réplicas con:<code bash>kubectl edit rs nginx</code> 
 +  * <code bash>kubectl describe rs nginx</code> 
 +  * <code bash>kubectl delete rs nginx</code> 
 + 
 +=== Deployments 
 +  * deploy pods 
 +  * rolling updates 
 +  * roll back pods y replicaSets 
 +  * realizar un deployment:<code bash># kubectl run nginx --image=nginx:1.12.0 --replicas=2 --port=80</code> 
 +  * {{ :info:libros:devops-kubernetes:pasted:20200413-132455.png }} 
 +  * exponer puerto 80 al service port 80: <code bash>kubectl expose deployment nginx --port=80 --target-port=80</code> 
 +  * <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:1.12.0 
 +        ports: 
 +        - containerPort: 80 
 +--- 
 +kind: Service 
 +apiVersion: v1 
 +metadata: 
 +  name: nginx 
 +    labels: 
 +      run: nginx 
 +spec: 
 +  selector: 
 +    run: nginx 
 +  ports: 
 +    - protocol: TCP 
 +      port: 80 
 +      targetPort: 80 
 +      name: http 
 +</code> 
 +  * <code bash>kubectl create -f 3-2-3_deployments.yaml</code> 
 + 
 +pag:113
  • info/libros/devops-kubernetes/cap3-2.1586810876.txt.gz
  • Darrera modificació: 13/04/2020 13:47
  • per mate