Unlike docker-compose sometimes kubectl provides you better tooling for docker container access.
Let me share with you my useful findings.
Check a deployment and a pod with a oneliner.
First, label your deployment and pod, say with label service_group=classic
Then you can do this
kubectl get pod,deployment -l=service_group=classic
and get response similar to
NAME READY STATUS RESTARTS AGE pod/dev-kayako-classic-7b7d7b6777-lm2n8 0/1 ContainerCreating 0 18s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.extensions/dev-kayako-classic 1 1 1 0 18s
Port forwarding to a pod or deployment
With port-forward, you can easily connect to pods service and debug it.
kubectl port-forward pod/podname port
kubectl port-forward deployment/mydeployment port
kubectl port-forward sharepass-78d566f866-4dvv5 3000
Forwarding from 127.0.0.1:3000 -> 3000 Forwarding from [::1]:3000 -> 3000 Handling connection for 3000 Handling connection for 3000
This will forward port 3000 to localhost, so you can open URL http://localhost:3000 and enjoy access to your service.
Put config files in volume with ConfigMap
apiVersion: v1 kind: ConfigMap metadata: name: patch data: iconv.txt: | bla-bla --- apiVersion: extensions/v1beta1 kind: Deployment spec: ... volumeMounts: - name: patches mountPath: /opt/patches volumes: - name: patches configMap: name: patch
Work with different clusters in different terminal tabs
use KUBECONFIG environment variable to specify a different config cluster file
export KUBECONFIG=/Users/nexus/mycluster/config kubectl get pods
Update docker image inside a pod
For example you'd like to update image to v1.0.1 for the pod mypod in deployment mydeployment.
kubectl set image deployment mydeployment mypod=myimage:1.0.1
Pod status change watch
Say you have dev-classic-bla-bla pod and you just did an update to this deployment. With this command, you can watch what's happening with your pod.
kubectl get pod --watch | grep classic
dev-classic-6586754cb8-kt5fz 0/1 Terminating 0 4m dev-classic-6586754cb8-kt5fz 0/1 Terminating 0 4m dev-classic-6586754cb8-kt5fz 0/1 Terminating 0 4m dev-classic-85b958f486-p4vt2 0/1 Pending 0 0s dev-classic-85b958f486-p4vt2 0/1 Pending 0 0s dev-classic-85b958f486-p4vt2 0/1 ContainerCreating 0 0s dev-classic-85b958f486-p4vt2 1/1 Running 0 7s
Use the “record” option for easier rollbacks
When applying a yaml use the —record flag:
kubectl apply -f deployment.yaml --record
With this option, everytime there is an update, it gets saved to the history of those deployments and it provides you with the ability to rollback a change.
kubectl rollout history deployments my-deployment
This tool is helpful when you have a lot of k8s clusters for management.
This tool will help you to install nice prompt with k8s cluster name and current context