## set alias en powershell
Set-Alias -name k -value kubectl
k version
k cluster-info
k get all
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
k describe secret -n kube-system
k proxy
kubectl run my-nginx --image=nginx:latest
kubectl get pods
kubectl get all
kubectl port-forward my-nginx 8080:80
kubectl describe pod my-nginx
kubectl delete pod my-nginx
kubectl get pods
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
spec:
containers:
- name: my-nginx
image: nginx:alpine
kubectl apply -f .\nginx.pod.yml
kubectl delete -f .\nginx.pod.yml
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
labels:
app: nginx
rel: stable
spec:
containers:
- name: my-nginx
image: nginx:alpine
ports:
- containerPort: 80
resources:
livenessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 5
failureThreshold: 1
readinessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 15
periodSeconds: 5
failureThreshold: 1
kubectl get pods --watch
kubectl exec my-nginx -it -- sh
´´´
´´´ sh
cd usr/share/nginx/html
rm index.html
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: my-nginx
spec:
replicas: 2
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: my-nginx
image: nginx:alpine
ports:
- containerPort: 80
resources:
kubectl apply -f .\deployments\nginx.deployment.yml
kubectl get all
kubectl describe deployment my-nginx
delete pod
kubectl get all
kubectl scale -f .\deployments\nginx.deployment.yml --replicas=4
kubectl get pods -w
kubectl delete pod [podname]
kubectl delete deployment my-nginx
kubectl apply -f .\nginx.deployment.yml
kubectl get pods --watch
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: my-nginx
spec:
replicas: 2
selector:
matchLabels:
app: my-nginx
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: my-nginx
image: nginx:latest
ports:
- containerPort: 80
resources:
limits:
memory: "128Mi" #128 MB
cpu: "200m" #200 millicpu (.2 cpu or 20% of the cpu)
readinessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 15
periodSeconds: 5
failureThreshold: 1
livenessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 15
timeoutSeconds: 2
periodSeconds: 5
failureThreshold: 1
kubectl apply -f .\nginx.deployment.yml
Port forwarding
kubectl port-forward pod/name 8080:80
kubectl port-forward deployment/name 8080
kubectl port-forward service/name 8080
kubectl apply -f ./deployments/nginx.deployment.yml
kubectl get all
k exec pod/my-nginx-5bb9b897c8-mrgds -- curl -s http://10.1.0.106
## clusterip address
k exec pod/my-nginx-5bb9b897c8-mrgds -- curl -s http://10.1.0.106
apiVersion: v1
kind: Service
metadata:
type: ClusterIP
name: nginx-clusterip ## DNS name (cluster internal)
labels:
app: nginx
spect:
selector:
app: nginx
ports:
- name: http
port: 8080
targetPort: 80
## clusterip DNS
k exec pod/my-nginx-5bb9b897c8-mrgds -- curl -s http://nginx-clusterip:8080
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport
spec:
type: NodePort
selector:
app: my-nginx
ports:
- port: 80
targetPort: 80
nodePort: 31000
apiVersion: v1
kind: Service
metadata:
name: nginx-loadbalancer
spec:
type: LoadBalancer
selector:
app: my-nginx
ports:
- name: "80"
port: 8080
targetPort: 80
# - name: "443"
# port: 443
# targetPort: 443
kubectl apply -f .\nginx.loadbalancer.yml
kubectl get all -o wide
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
type: DirectoryOrCreate #por defecto es Directory, en caso del directorio no existir daría error
kubectl apply -f .\pv.yml
kubectl get pv
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f .\pvc.yml
kubectl get pvc -o wide
kubectl get pv -o wide
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: my-nginx #importante para relacionar objetos
spec:
replicas: 2
selector:
matchLabels:
app: my-nginx #objetos a los que afecta
template:
metadata:
labels:
app: my-nginx #etiqueta custom para asociar este objeto
spec: # definición de los Pods
containers:
- name: my-nginx
image: nginx:alpine
ports:
resources: # acá pueden ir cosas como límites de CPU y memoria
volumeMounts:
- name: vol1
mountPath: /usr/share/nginx/html
volumes:
- name: vol1
persistentVolumeClaim:
claimName: task-pv-claim
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-configmap
spec:
selector:
matchLabels:
app: nginx-configmap
template:
metadata:
labels:
app: nginx-configmap
spec:
containers:
- name: nginx-configmap
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
ports:
- containerPort: 9000
volumeMounts: # montamos el config map como un volumen para tenerlo accesible en un directorio del container
- name: app-config-vol
mountPath: /etc/config
env: # leemos cada environment variable de a una desde un config map creado
- name: MY_ENV1
valueFrom:
configMapKeyRef:
name: app-settings
key: MY_KEY1
optional: true
envFrom: # leemos todas las environment variables y las cargamos en el container
- configMapRef:
name: app-settings
volumes: # se crea un volumen a partir de un config map
- name: app-config-vol
configMap:
name: app-settings
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: nginx
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: db-passwords
key: db-username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: db-passwords
key: db-password
restartPolicy: Never