This has to be a key skill for the next for years in DevOps


  • AKS Microsoft’s Azure based implemenation



Notes on learning based on running K8S on macOS Docker Decktop.

kubectl run nginx --image=nginx --restart=Never

pod/nginx created

export KUBECONFIG=~/.kube/config
kubectl edit resourceQuota compute-resources

kubectl get rs
kubectl describe rs <rs-name>
kubectl get pods

kubectl apply -f some-file.yaml
kubectl get secrets <---> -o yaml > some-file.yaml

## RBAC (Resource Based Access Control)

Hi, We saw a bit of an issue on one of our Clusters last week where Kured had put one of our nodes into Scheduling Disabled but due to an out of Date Pod Disruption Budget policy on one of the Pods, it couldn’t be scheduled to another node. I could see this from running a kubectl get nodes and the node state being Ready,SchedulingDisabled. Then checking the Kured Logs and seeing it complaining about the offending Pod. So it was easy to fix, but my concern was we didn’t know this was happening and we had a node which was unable to schedule pods during this.

I’ve written this in Grafana to get that state out of the KubeEvents for our monitor dashboard, thought I would share

let clusterName = "$clusterName";
| where $__timeFilter(TimeGenerated)
| where ClusterName == clusterName and Reason == "NodeNotSchedulable"
| count

I’ve been trying to get the Kured logs out of log analytics with not much success (you cant see them in Container Insights through the portal either). Be good to have these logged in a dashboard for when Kured is having issues getting Pods scheduled. Has any one had any luck doing something like this?

Using TypeScript

tfs-cli (In github) npm etc


Tiller, the server portion of Helm, typically runs inside of your Kubernetes cluster. But for development, it can also be run locally, and configured to talk to a remote Kubernetes cluster.

The easiest way to install tiller into the cluster is simply to run helm init (Or install locally via brew install kubernetes-helm)

After helm init, you should be able to run kubectl get pods --namespace kube-system and see Tiller running.


Read the [[[Docker] notes first, then:

kubectl run demo --image=rikwatson/myhello --port=9999 --labels app=demo
kubectl port-forward deploy/demo 9999:8888

Some kubectl commands:

kubectl version

kubectl config view

JSONPATH='{range .items[*]}{}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'  && \
    kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=False"
JSONPATH='{range .items[*]}{}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'  && \
    kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"

kubectl api-resources --namespaced=false
kubectl apply -f sizemanagement-config-3af5579d5f.yaml --alsologtostderr=true
kubectl auth can-i create deployments --namespace backoffice-prod
kubectl auth can-i create deployments --namespace sizing-prod
kubectl config get-contexts
kubectl config set-context --current --namespace=sizing-prod
kubectl config shoe-contexts
kubectl config show-contexts
kubectl config use-context ecomm-backOffice-eun-k8-prod
kubectl config view | grep namespace:
kubectl get --all-namespaces
kubectl get deployment
kubectl get deployment -n sizing-prod
kubectl get deployment sizemanagement-deployment-e6091cd
kubectl get deployments -n sizing-prod
kubectl get events --sort-by=.metadata.creationTimestamp
kubectl get events --sort-by=.metadata.creationTimestamp -n sizing-prod
kubectl get logs backoffice-navigation-api-deployment-a98afc9-df47c6b8c-7qz5g
kubectl get namespace
kubectl get namespaces
kubectl get --namespaces
kubectl get nodes
kubectl get pods
kubectl get pods --all-namespaces
kubectl get pods --all-namespaces | grep navi
kubectl get pods --all-namespaces --include-uninitialized
kubectl get pods -n
kubectl get pods -n backoffice-prod
kubectl get pods -n sizing-prod
kubectl get pods -n sizing-prod --include-uninitialized
kubectl logs backoffice-navigation-api-deployment-a98afc9-df47c6b8c-7qz5g > backoffice-navigation-api-deployment-a98afc9-df47c6b8c-7qz5g.log
kubectl options
kubectl set
kubectl set namespace
kubectl set namespace backoffice-prod
kubectl set namespace sizing-prod

Esin’s Notes on AKS / K8S

Backoffice2 in Azure DevOPs

IaC 01-Host VM

IaC 02-AKS

Stages : Dev / E2e / Prod

NonProd - EUW

  • Create AKS Pipline (currently OctDep)
  • Traffik Manager profile & end-point


Prod - EUW - EUN - it ticket for DynDns

Test Repo & play. cf BackOffice2-Audit-Api-CI

  • Look into trigger options branches / master / PRs etc

See Custom Conditions.


Use Helm Red/Green via:

helm upgrade --namespace $ --reuse-values --set autoscale\_\_minReplicas=1 --set autoscale\_\_maxReplicas=1 --kubeconfig $(decodedKubeConfigPath) --version=$currentStagingSlot "$deployment" "$/$"

backoffice-product-web (feature/helm)


values.yaml via helpers.tpl

Azure Pipline Tasks

Using TypeScript

tfs-cli (In github) npm etc

## Istio