Aquesta és una revisió antiga del document
Sesión 8 : kubernetes
katacoda
- CoreDNS : DNS simple para trabajar como editando
/etc/hosts
y lo que no, a google
kubernetes
- master
- todo a través de la API
- etcd (lo que más se muere en entorno multimaster)
- en algunos casos pierde la coherencia, no se replica, hay que borrar los ficheros de etcd del nodo
- scheduler: distribuye
- controllers
- google no instala cluster de más de 100 nodos, escalan con balanceadores
- namespaces:
- comparten servicios
- como un «stack»
- pod:
- contenedores compartiendo IP (se comunican como «localhost»)
- secrets & configMaps
- comparten (o pueden) volúmenes
- uso de etiquetas para relacionar los diferentes objetos
- redes:
- swarm: si cmparten red, se ven
- kubernetes: si comparte *namespace*, se ven
- conceptos kubernetes
- deployment
- apartado *template*: definición del *pod* o *pods*
- estrategias de autoescalado
- histórico (roll-back)
- service
- clusterIP
- nodePort
- LoadBalancer
- kubelet:
- agente en los nodos workers
- obtiene el estado de los pods
- healtcheck en Dockerfile (para repartir la carga)… si no lo pasa, se suicida
- kube-proxy:
- proxy de puertos en el nodo worker
- volumeclaim
- casa contendores/pods con los volúmenes
- se puede afinar su asignación
- Estratégias despliegue:
- RollingUpdate
- Blue/Green
- Canary
- A/B testing
- ventajas
- autoescalado
- gestión de volúmenes
- gestión de red
- docker-enterprise apuesta por kubernetes, futuro de docker-swarm?
- kubernetes=linux, swarm=macintosh
- deployment vs daemonset (swarm «global»)
- daemontset → recolectores
labs
- helm.sh (no temario) : recetas (Charts) para desplegar sobre kubernetes
- microsoft/azure/google…
- gitlab using helm
- duffle = creación de kubernetes + helm
- traefik kubernetes = https://docs.traefik.io/user-guide/kubernetes/
- istio
- kong = capa + plugin ram lua + nginx
- katacoda
-
minikube version
minikube start
kubectl cluster-info
kubectl get nodes
kubectl run first-deployment –image=katacoda/docker-http-server –port=80
→kubectl create
kubectl expose deployment first-deployment –port=80 –type=NodePort
kubectl describe deployments
export PORT=$(kubectl get svc first-deployment -o go-template='range.spec.portsif_.nodeportnodeportnendend'); echo «Accessing host01:$PORT»; curl host01:$PORT
-
- kubeadm : aprovisionamiento de nodos
kubeadm init –token=102952.1a7dd4cc8d1f4cc5 –kubernetes-version $(kubeadm version -o short)
← en producción no pasar el token para se generesudo cp /etc/kubernetes/admin.conf $HOME/; sudo chown $(id -u):$(id -g) $HOME/admin.conf; export KUBECONFIG=$HOME/admin.conf
: copia certificados y configuración en el $HOME del usuario en curso para su usokubeadm token list
kubeadm join –discovery-token-unsafe-skip-ca-verification –token=102952.1a7dd4cc8d1f4cc5 172.17.0.44:6443
- –discovery-token-unsafe-skip-ca-verification : bybass Discovery Token verification
kubectl get nodes
(on master)- CNI: Container Network Interface : networks providers
kubectl apply -f /opt/weave-kube
: deploy del WeaveWorkskubectl get pod -n kube-system
kubectl create deployment http –image=katacoda/docker-http-server:latest
kubectl get pods
docker ps | grep docker-http-server
(on node)kubectl apply -f dashboard.yaml
kubectl get pods -n kube-system
- Creacion ServiceAccount:
cat <<EOF | kubectl create -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system EOF
-
otros
- abreviatureas:
- kubernetes = k8s
- internalization = i10n
- localization = l18n
- minikube
- komposer (swarm - k8s)
- tibco