refactor(docs): convert .sh file to .md

This commit is contained in:
Mihir 2020-07-18 15:24:42 -07:00
parent b35cf4043d
commit 00918e7080
2 changed files with 179 additions and 137 deletions

179
tools/kubernetes.md Normal file
View File

@ -0,0 +1,179 @@
# Kubernetes
* PDF: https://sematext.com/kubernetes-cheat-sheet/
* WEBSITE: https://kubernetes.io/
* DOCUMENTATION: https://kubernetes.io/docs/home
## Client Configuration
* Setup autocomplete in bash; bash-completion package should be installed first
```
source <(kubectl completion bash)
```
* View Kubernetes config
```
kubectl config view
```
* View specific config items by json path
```
kubectl config view -o jsonpath='{.users[?(@.name == "k8s")].user.password}'
```
* Set credentials for `foo.kuberntes.com`
```
kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
```
* Set active namespace
```
kubectl config set-context --current --namespace=namespace_name
```
## Viewing, Finding resources
* List all services in the namespace
```
kubectl get services
```
* List all pods in all namespaces in wide format
```
kubectl get pods -o wide --all-namespaces
```
* List all pods in json (or yaml) format
```
kubectl get pods -o json
```
* Describe resource details (node, pod, svc)
```
kubectl describe nodes my-node
```
* List services sorted by name
```
kubectl get services --sort-by=.metadata.name
```
* List pods sorted by restart count
```
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'
```
* Rolling update pods for frontend-v1
```
kubectl rolling-update frontend-v1 -f frontend-v2.json
```
* Scale a replicaset named 'foo' to 3
```
kubectl scale --replicas=3 rs/foo
```
* Scale a resource specified in "foo.yaml" to 3
```
kubectl scale --replicas=3 -f foo.yaml
```
* Execute a command in every pod / replica
```
for i in 0 1; do kubectl exec foo-$i -- sh -c 'echo $(hostname) > /usr/share/nginx/html/index.html'; done
```
## Manage Resources
* Get documentation for pod or service
```
kubectl explain pods,svc
```
* Create resource(s) like pods, services or daemonsets
```
kubectl create -f ./my-manifest.yaml
```
* Apply a configuration to a resource
```
kubectl apply -f ./my-manifest.yaml
```
* Start a single instance of Nginx
```
kubectl run nginx --image=nginx
```
* Create a secret with several keys
```
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: $(echo "s33msi4" | base64)
username: $(echo "jane"| base64)
EOF
```
* Delete a resource
```
kubectl delete -f ./my-manifest.yaml
```
## Monitoring & Logging
* Deploy Heapster from Github repository
```
kubectl create -f deploy/kube-config/standalone/
```
* Show metrics for nodes
```
kubectl top node
```
* Show metrics for pods
```
kubectl top pod
```
* Show metrics for a given pod and its containers
```
kubectl top pod pod_name --containers
```
* Dump pod logs (stdout)
```
kubectl logs pod_name
```
* Stream pod container logs (stdout, multi-container case)
```
kubectl logs -f pod_name -c my-container
```
## Interacting with running pods
* Run command in pod
```
kubectl exec pod_name -- command_name
```
* Run command in pod with multiple containers
```
kubectl exec pod_name -c container_name -- command_name
```
* Get terminal of pod
```
kubectl exec -it pod_name /bin/sh
```
* Get terminal of a container running in pod with multiple containers
```
kubectl exec -it pod_name -c container_name /bin/sh
```

View File

@ -1,137 +0,0 @@
##############################################################################
# KUBERNETES
# PDF: https://sematext.com/kubernetes-cheat-sheet/
# WEBSITE: https://kubernetes.io/
# DOCUMENTATION: https://kubernetes.io/docs/home
##############################################################################
##############################################################################
# CLIENT CONFIGURATION
##############################################################################
# Setup autocomplete in bash; bash-completion package should be installed first
source <(kubectl completion bash)
# View Kubernetes config
kubectl config view
# View specific config items by json path
kubectl config view -o jsonpath='{.users[?(@.name == "k8s")].user.password}'
# Set credentials for foo.kuberntes.com
kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
# Set active namespace
kubectl config set-context --current --namespace=namespace_name
##############################################################################
# VIEWING, FINDING RESOURCES
##############################################################################
# List all services in the namespace
kubectl get services
# List all pods in all namespaces in wide format
kubectl get pods -o wide --all-namespaces
# List all pods in json (or yaml) format
kubectl get pods -o json
# Describe resource details (node, pod, svc)
kubectl describe nodes my-node
# List services sorted by name
kubectl get services --sort-by=.metadata.name
# List pods sorted by restart count
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'
# Rolling update pods for frontend-v1
kubectl rolling-update frontend-v1 -f frontend-v2.json
# Scale a replicaset named 'foo' to 3
kubectl scale --replicas=3 rs/foo
# Scale a resource specified in "foo.yaml" to 3
kubectl scale --replicas=3 -f foo.yaml
# Execute a command in every pod / replica
for i in 0 1; do kubectl exec foo-$i -- sh -c 'echo $(hostname) > /usr/share/nginx/html/index.html'; done
##############################################################################
# MANAGE RESOURCES
##############################################################################
# Get documentation for pod or service
kubectl explain pods,svc
# Create resource(s) like pods, services or daemonsets
kubectl create -f ./my-manifest.yaml
# Apply a configuration to a resource
kubectl apply -f ./my-manifest.yaml
# Start a single instance of Nginx
kubectl run nginx --image=nginx
# Create a secret with several keys
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: $(echo "s33msi4" | base64)
username: $(echo "jane"| base64)
EOF
# Delete a resource
kubectl delete -f ./my-manifest.yaml
##############################################################################
# MONITORING & LOGGING
##############################################################################
# Deploy Heapster from Github repository
kubectl create -f deploy/kube-config/standalone/
# Show metrics for nodes
kubectl top node
# Show metrics for pods
kubectl top pod
# Show metrics for a given pod and its containers
kubectl top pod pod_name --containers
# Dump pod logs (stdout)
kubectl logs pod_name
# Stream pod container logs (stdout, multi-container case)
kubectl logs -f pod_name -c my-container
##############################################################################
# INTERACTING WITH RUNNING PODS
##############################################################################
# Run command in pod
kubectl exec pod_name -- command_name
# Run command in pod with multiple containers
kubectl exec pod_name -c container_name -- command_name
# Get terminal of pod
kubectl exec -it pod_name /bin/sh
# Get terminal of a container running in pod with multiple containers
kubectl exec -it pod_name -c container_name /bin/sh