{"id":7378,"date":"2020-12-25T11:39:07","date_gmt":"2020-12-25T10:39:07","guid":{"rendered":"https:\/\/blog.via-internet.de\/?p=7378"},"modified":"2020-12-25T11:39:07","modified_gmt":"2020-12-25T10:39:07","slug":"kubernetes-getting-started","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2020\/12\/25\/kubernetes-getting-started\/","title":{"rendered":"Kubernetes| Getting started"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Readings<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Helm &#8211; The Kubernetes Package Manager &#8211; <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/helm\/helm\" data-type=\"URL\" data-id=\"https:\/\/github.com\/helm\/helm\" target=\"_blank\">Home <\/a>&#8211; <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/helm\/helm\" data-type=\"URL\" data-id=\"https:\/\/github.com\/helm\/helm\" target=\"_blank\">Github<\/a><br><strong>Helm: package manager<\/strong>&nbsp;(analogous to yum and apt) <br><strong>Charts: packages<\/strong>&nbsp;(analogous to debs and rpms). Home for these Charts is the&nbsp;<a href=\"https:\/\/github.com\/kubernetes\/charts\">Kubernetes Charts repository<\/a>.<\/li><li>Helm &#8211; <a rel=\"noreferrer noopener\" href=\"https:\/\/helm.sh\/docs\/intro\/\" data-type=\"URL\" data-id=\"https:\/\/helm.sh\/docs\/intro\/\" target=\"_blank\">Introduction to Helm<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TL;DR<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Helm (<a rel=\"noreferrer noopener\" href=\"https:\/\/helm.sh\/docs\/intro\/install\/\" data-type=\"URL\" data-id=\"https:\/\/helm.sh\/docs\/intro\/install\/\" target=\"_blank\">Documentation<\/a>): Using Helm<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>choco install kubernetes-helm\nhelm\nhelm repo add stable https:\/\/charts.helm.sh\/stable\nhelm search repo stable\nhelm repo update\nhelm install stable\/mysql --generate-name\nhelm install stable\/mysql --generate-name\nhelm ls\nhelm status mysql-1609772389<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>helm search hub wordpress\nhelm repo add brigade https:\/\/brigadecore.github.io\/charts\nhelm repo ls\nhelm search repo brigade<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Customizing the Chart Before Installing<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Helm: Concepts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Three Big Concepts<\/p>\n\n\n\n<table class=\"wp-block-advgb-table advgb-table-frontend\"><tbody><tr><td><em>Chart<\/em><\/td><td>Helm package. It contains all of the resource definitions necessary to run an application, tool, or service inside of a Kubernetes cluster.<\/td><\/tr><tr><td><em>Repository<\/em><\/td><td>Place where charts can be collected and shared.<\/td><\/tr><tr><td><em>Release<\/em><\/td><td>Instance of a chart running in a Kubernetes cluster. <br>One chart can often be installed many times into the same cluster. And each time it is installed, a new&nbsp;<em>release<\/em>&nbsp;is created. <br>Consider a MySQL chart. If you want two databases running in your cluster, you can install that chart twice. Each one will have its own&nbsp;<em>release<\/em>, which will in turn have its own&nbsp;<em>release name<\/em>.<\/td><\/tr><\/tbody><\/table>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"three-big-concepts\">Helm:  Creating Charts<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>helm create chartname\nhelm package chartname\nhelm install mychart\nhelm install mychart mychart\/ --values mychart\/values.yaml\nhelm ls\nhelm delete generated-deployment-name\nhelm package mychart\nhelm install mychart-0.1.0.tgz\nhelm install release-name mychart <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Helm: CLI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Common actions for Helm:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>- helm search:    search for charts\n- helm pull:      download a chart to your local directory to view\n- helm install:   upload the chart to Kubernetes\n- helm list:      list releases of charts\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Environment variables:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>| Name                               | Description                                                                       |\n|------------------------------------|-----------------------------------------------------------------------------------|\n| $HELM_CACHE_HOME                   | set an alternative location for storing cached files.                             |\n| $HELM_CONFIG_HOME                  | set an alternative location for storing Helm configuration.                       |\n| $HELM_DATA_HOME                    | set an alternative location for storing Helm data.                                |\n| $HELM_DEBUG                        | indicate whether or not Helm is running in Debug mode                             |\n| $HELM_DRIVER                       | set the backend storage driver. Values are: configmap, secret, memory, postgres   |\n| $HELM_DRIVER_SQL_CONNECTION_STRING | set the connection string the SQL storage driver should use.                      |\n| $HELM_MAX_HISTORY                  | set the maximum number of helm release history.                                   |\n| $HELM_NAMESPACE                    | set the namespace used for the helm operations.                                   |\n| $HELM_NO_PLUGINS                   | disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins.                        |\n| $HELM_PLUGINS                      | set the path to the plugins directory                                             |\n| $HELM_REGISTRY_CONFIG              | set the path to the registry config file.                                         |\n| $HELM_REPOSITORY_CACHE             | set the path to the repository cache directory                                    |\n| $HELM_REPOSITORY_CONFIG            | set the path to the repositories file.                                            |\n| $KUBECONFIG                        | set an alternative Kubernetes configuration file (default \"~\/.kube\/config\")       |\n| $HELM_KUBEAPISERVER                | set the Kubernetes API Server Endpoint for authentication                         |\n| $HELM_KUBEASGROUPS                 | set the Groups to use for impersonation using a comma-separated list.             |\n| $HELM_KUBEASUSER                   | set the Username to impersonate for the operation.                                |\n| $HELM_KUBECONTEXT                  | set the name of the kubeconfig context.                                           |\n| $HELM_KUBETOKEN                    | set the Bearer KubeToken used for authentication.                                 |<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Helm stores cache, configuration, and data based on the following configuration order:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; If a HELM_*_HOME environment variable is set, it will be used<br>&#8211; Otherwise, on systems supporting the XDG base directory specification, the XDG variables will be used<br>&#8211; When no other location is set a default location will be used based on the operating system<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By default, the default directories depend on the Operating System. The defaults are listed below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>| OS      | Cache Path                | Configuration Path             | Data Path\n|---------|---------------------------|--------------------------------|-------------------------|\n| Linux   | $HOME\/.cache\/helm         | $HOME\/.config\/helm             | $HOME\/.local\/share\/helm\n| macOS   | $HOME\/Library\/Caches\/helm | $HOME\/Library\/Preferences\/helm | $HOME\/Library\/helm\n| Windows | \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Available Commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  completion  generate autocompletions script for the specified shell\n  create      create a new chart with the given name\n  dependency  manage a chart's dependencies\n  env         helm client environment information\n  get         download extended information of a named release\n  help        Help about any command\n  history     fetch release history\n  install     install a chart\n  lint        examine a chart for possible issues\n  list        list releases\n  package     package a chart directory into a chart archive\n  plugin      install, list, or uninstall Helm plugins\n  pull        download chart from repository and unpack in local directory\n  repo        add, list, remove, update, and index chart repositories\n  rollback    roll back a release to a previous revision\n  search      search for a keyword in charts\n  show        show information of a chart\n  status      display the status of the named release\n  template    locally render templates\n  test        run tests for a release\n  uninstall   uninstall a release\n  upgrade     upgrade a release\n  verify      verify that a chart at the given path has been signed and is valid\n  version     print the client version information<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Flags<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      --debug                       enable verbose output\n  -h, --help                        help for helm\n      --kube-apiserver string       the address and the port for Kubernetes API server\n      --kube-as-group stringArray   Group to impersonate for the operation, \n                                    flag can be repeated to specify multiple groups.\n      --kube-as-user string         Username to impersonate for the operation\n      --kube-context string         name of the kubeconfig context to use\n      --kube-token string           bearer token used for authentication\n      --kubeconfig string           path to the kubeconfig file\n  -n, --namespace string            namespace scope for this request\n      --registry-config string      path to the registry config file \n                                    (&lt;User&gt;\\AppData\\Roaming\\helm\\registry.json)\n      --repository-cache string     path to file containing cached repository indexes\n                                    (&lt;User&gt;\\AppData\\Local\\Temp\\helm\\repository)\n      --repository-config string    path to file containing repository names and URLs\n                                   (&lt;User&gt;\\AppData\\Roaming\\helm\\repositories.yaml)\n \nUse \"helm &#91;command] --help\" for more information about a command.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">General Information<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Minikube<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/\">https:\/\/minikube.sigs.k8s.io\/docs\/start\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start Cluster<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>minikube start\n* minikube v1.16.0 auf Microsoft Windows 10 Pro 10.0.19042 Build 19042\n* Automatically selected the docker driver\n* Starting control plane node minikube in cluster minikube\n* Pulling base image ...\n* Downloading Kubernetes v1.20.0 preload ...\n    &gt; preloaded-images-k8s-v8-v1....: 491.00 MiB \/ 491.00 MiB  100.00\n* Creating docker container (CPUs=2, Memory=8100MB) ...\nE1225 11:29:49.056358   11564 kic.go:241] icacls failed applying permissions - err - &#91;\n1 Dateien erfolgreich verarbeitet, bei 0 Dateien ist ein Verarbeitungsfehler aufgetreten.]\n* Vorbereiten von Kubernetes v1.20.0 auf Docker 20.10.0...\n  - Generating certificates and keys ...\n  - Booting up control plane ...\n  - Configuring RBAC rules ...\n* Verifying Kubernetes components...\n* Enabled addons: storage-provisioner, default-storageclass\n* Done! kubectl is now configured to use \"minikube\" cluster and \"default\" namespace by default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get po -A<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">minikube kubectl -- get po -A<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">minikube dashboard<\/pre><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/blog.via-internet.de\/wp-content\/uploads\/2020\/12\/image-34-700x403.png\" alt=\"\" class=\"wp-image-7384\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl create deployment hello-minikube --image=k8s.gcr.io\/echoserver:1.4\nkubectl expose deployment hello-minikube --type=NodePort --port=8080\n<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get services hello-minikube\nminikube service hello-minikube<\/pre><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alternatively, use kubectl to forward the port:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl port-forward service\/hello-minikube 7080:8080<\/pre><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Kubernetes Basics Module<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Reference<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Kubernetes : <\/strong>production-grade, open-source platform that orchestrates the placement (scheduling) and execution of application containers within and across computer clusters.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Deployment: <\/strong>responsible for creating and updating instances of your application<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Pod: <\/strong>group of one or more application containers (such as Docker) and includes shared storage (volumes), IP address and information about how to run them.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Node: <\/strong>a worker machine in Kubernetes and may be either a virtual or a physical machine, depending on the cluster.<\/em> <em>Multiple Pods can run on one Node.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Kubernetes Service:<\/strong> abstraction layer which defines a logical set of Pods and enables external traffic exposure, load balancing and service discovery for those Pods.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Scaling<\/strong>&nbsp;is accomplished by changing the number of replicas in a Deployment<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorial <\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/create-cluster\/cluster-intro\/\">1. Create a Kubernetes cluster<\/a><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">minikube version<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">minikube start<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl cluster-info\nKubernetes control plane is running at https:\/\/127.0.0.1:49153\nKubeDNS is running at https:\/\/127.0.0.1:49153\/api\/v1\/namespaces\/kube-system\/services\/kube-dns:dns\/proxy<\/pre><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/deploy-app\/deploy-intro\/\" data-type=\"URL\" data-id=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/deploy-app\/deploy-intro\/\" target=\"_blank\">2. Deploy an App<\/a><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get node\nNAME       STATUS   ROLES                  AGE     VERSION\nminikube   Ready    control-plane,master   5d22h   v1.20.0<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl create deployment kubernetes-bootcamp --image=gcr.io\/google-samples\/kubernetes-bootcamp:v1\ndeployment.apps\/kubernetes-bootcamp created<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get deployments\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\nkubernetes-bootcamp   1\/1     1            1           52s<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl proxy\nStarting to serve on 127.0.0.1:8001<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl http:\/\/localhost:8001\/version\n{\n  \"major\": \"1\",\n  \"minor\": \"20\",\n  \"gitVersion\": \"v1.20.0\",\n  \"gitCommit\": \"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38\",\n  \"gitTreeState\": \"clean\",\n  \"buildDate\": \"2020-12-08T17:51:19Z\",\n  \"goVersion\": \"go1.15.5\",\n  \"compiler\": \"gc\",\n  \"platform\": \"linux\/amd64\"\n}<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get pods\nNAME                                   READY   STATUS    RESTARTS   AGE\nhello-minikube-6ddfcc9757-kpl5f        1\/1     Running   1          5d22h\nkubernetes-bootcamp-57978f5f5d-ccr6p   1\/1     Running   0          6m25s<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>k<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}'<\/pre><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/explore\/explore-intro\/\">3. Explore your app<\/a><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get pods\n<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl describe pods<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}'\nkubernetes-bootcamp-57978f5f5d-z8vsm<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; $PODNAME=kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; Invoke-WebRequest http:\/\/localhost:8001\/api\/v1\/namespaces\/default\/pods\/$PODNAME\nStatusCode        : 200\nStatusDescription : OK\nContent           : {\n                      \"kind\": \"Pod\",\n                      \"apiVersion\": \"v1\",\n                      \"metadata\": {\n                        \"name\": \"kubernetes-bootcamp-57978f5f5d-z8vsm\",\n                        \"generateName\": \"kubernetes-bootcamp-57978f5f5d-\",\n                        \"namespace\": \"default\",\n                        \"uid\u2026\nRawContent        : HTTP\/1.1 200 OK\n                    Cache-Control: no-cache, private\n                    Date: Thu, 31 Dec 2020 10:07:12 GMT\n                    X-Kubernetes-Pf-Flowschema-Uid: be79abd4-3f87-4ca2-80be-2b83f4c48148\n                    X-Kubernetes-Pf-Prioritylevel-Uid: 3c0f88d\u2026\nHeaders           : {&#91;Cache-Control, System.String&#91;]], &#91;Date, System.String&#91;]], &#91;X-Kubernetes-Pf-Flowschema-Uid, System.String&#91;]], &#91;X-Kubernetes-Pf-Prioritylevel-Uid, System.String&#91;]]\u2026}\nImages            : {}\nInputFields       : {}\nLinks             : {}\nRawContentLength  : 5593\nRelationLink      : {}<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl logs $PODNAME\nKubernetes Bootcamp App Started At: 2020-12-31T09:09:43.763Z | Running On:  kubernetes-bootcamp-57978f5f5d-z8vsm<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl exec $PODNAME env\nkubectl exec &#91;POD] &#91;COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec &#91;POD] -- &#91;COMMAND] instead.\nPATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin\nHOSTNAME=kubernetes-bootcamp-57978f5f5d-z8vsm\nKUBERNETES_PORT_443_TCP_PROTO=tcp\nKUBERNETES_PORT_443_TCP_ADDR=10.96.0.1\nKUBERNETES_SERVICE_HOST=10.96.0.1\nKUBERNETES_PORT_443_TCP_PORT=443\nKUBERNETES_SERVICE_PORT_HTTPS=443\nKUBERNETES_PORT=tcp:\/\/10.96.0.1:443\nKUBERNETES_PORT_443_TCP=tcp:\/\/10.96.0.1:443\nKUBERNETES_SERVICE_PORT=443\nNPM_CONFIG_LOGLEVEL=info\nNODE_VERSION=6.3.1\nHOME=\/root<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1,5\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl exec -ti $PODNAME bash\nkubectl exec &#91;POD] &#91;COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec &#91;POD] -- &#91;COMMAND] instead.\nroot@kubernetes-bootcamp-57978f5f5d-z8vsm:\/# exit\nexit<\/pre><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/expose\/expose-intro\/\"><\/a><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/expose\/expose-intro\/\">4. Expose your app publicly<\/a><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Step 1 Create a new service<a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/scale\/scale-intro\/\"><\/a><\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1,4\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get pods\nNAME                                   READY   STATUS    RESTARTS   AGE\nkubernetes-bootcamp-57978f5f5d-z8vsm   1\/1     Running   1          95m\n\u276f kubectl get services\nNAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE\nkubernetes       ClusterIP   10.96.0.1       &lt;none&gt;        443\/TCP          6d<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl expose deployment\/kubernetes-bootcamp --type=\"NodePort\" --port 8080\nservice\/kubernetes-bootcamp exposed<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"4\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get services\nNAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE\nkubernetes            ClusterIP   10.96.0.1       &lt;none&gt;        443\/TCP          6d\nkubernetes-bootcamp   NodePort    10.98.244.121   &lt;none&gt;        8080:31603\/TCP   3m58s<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl describe services\/kubernetes-bootcamp\nName:                     kubernetes-bootcamp\nNamespace:                default\nLabels:                   app=kubernetes-bootcamp\nAnnotations:              &lt;none&gt;\nSelector:                 app=kubernetes-bootcamp\nType:                     NodePort\nIP Families:              &lt;none&gt;\nIP:                       10.98.244.121\nIPs:                      10.98.244.121\nPort:                     &lt;unset&gt;  8080\/TCP\nTargetPort:               8080\/TCP\nNodePort:                 &lt;unset&gt;  31603\/TCP\nEndpoints:                172.17.0.5:8080\nSession Affinity:         None\nExternal Traffic Policy:  Cluster\nEvents:                   &lt;none&gt;<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; $NODEPORT=kubectl get services\/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}'\n\u276f $NODEPORT\n31603<\/pre><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Step 2: Using labels<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl describe deployment\nName:                   kubernetes-bootcamp\nNamespace:              default\nCreationTimestamp:      Thu, 31 Dec 2020 09:49:43 +0100\nLabels:                 app=kubernetes-bootcamp\nAnnotations:            deployment.kubernetes.io\/revision: 1\nSelector:               app=kubernetes-bootcamp\nReplicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable\nStrategyType:           RollingUpdate\nMinReadySeconds:        0\nRollingUpdateStrategy:  25\nPod Template:\n  Labels:  app=kubernetes-bootcamp\n  Containers:\n   kubernetes-bootcamp:\n    Image:        gcr.io\/google-samples\/kubernetes-bootcamp:v1\n    Port:         &lt;none&gt;\n    Host Port:    &lt;none&gt;\n    Environment:  &lt;none&gt;\n    Mounts:       &lt;none&gt;\n  Volumes:        &lt;none&gt;\nConditions:\n  Type           Status  Reason\n  ----           ------  ------\n  Progressing    True    NewReplicaSetAvailable\n  Available      True    MinimumReplicasAvailable\nOldReplicaSets:  &lt;none&gt;\nNewReplicaSet:   kubernetes-bootcamp-57978f5f5d (1\/1 replicas created)\nEvents:          &lt;none&gt;<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get pods -l app=kubernetes-bootcamp\nNAME                                   READY   STATUS    RESTARTS   AGE\nkubernetes-bootcamp-57978f5f5d-z8vsm   1\/1     Running   1          31h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get services -l app=kubernetes-bootcamp\nNAME                  TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE\nkubernetes-bootcamp   NodePort   10.98.244.121   &lt;none&gt;        8080:31603\/TCP   30h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; $POD_NAME=kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}'\n\u276f $POD_NAME\nkubernetes-bootcamp-57978f5f5d-z8vsm<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl label pod $POD_NAME app=v1<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl label pod $POD_NAME app=v1\nerror: 'app' already has a value (kubernetes-bootcamp), and --overwrite is false\n\u276f kubectl label pod $POD_NAME app=v1 --overwrite\npod\/kubernetes-bootcamp-57978f5f5d-z8vsm labeled<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get pods -l app=v1\nNAME                                   READY   STATUS    RESTARTS   AGE\nkubernetes-bootcamp-57978f5f5d-z8vsm   1\/1     Running   1          31h<\/pre><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Step 3: Deleting a service<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get services\nNAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE\nkubernetes            ClusterIP   10.96.0.1       &lt;none&gt;        443\/TCP          7d6h\nkubernetes-bootcamp   NodePort    10.98.244.121   &lt;none&gt;        8080:31603\/TCP   30h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u276f kubectl delete service -l app=kubernetes-bootcamp\nservice \"kubernetes-bootcamp\" deleted<\/pre><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Not reachable from outside<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; curl $(minikube ip):$NODE_PORT<\/pre><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reachable from inside<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl exec -ti $POD_NAME -- curl localhost:8080\nHello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-57978f5f5d-z8vsm | v=1<\/pre><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/scale\/scale-intro\/\">5. Scale up your app<\/a><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Step 1: Scaling a deployment<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">To list your deployments&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get deployments\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\nkubernetes-bootcamp   1\/1     1            1           32h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get rs\nNAME                             DESIRED   CURRENT   READY   AGE\nkubernetes-bootcamp-57978f5f5d   1         1         1       32h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl scale deployments\/kubernetes-bootcamp --replicas=4\ndeployment.apps\/kubernetes-bootcamp scaled<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get rs\nNAME                             DESIRED   CURRENT   READY   AGE\nkubernetes-bootcamp-57978f5f5d   4         4         4       32h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get deployments\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\nkubernetes-bootcamp   4\/4     4            4           32h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get pods -o wide\nNAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES\nkubernetes-bootcamp-57978f5f5d-9fwnz   1\/1     Running   0          28m     172.17.0.6   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-dgvm4   1\/1     Running   0          6m33s   172.17.0.8   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-qh686   1\/1     Running   0          6m33s   172.17.0.9   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-wx9zg   1\/1     Running   0          6m33s   172.17.0.7   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-z8vsm   1\/1     Running   1          32h     172.17.0.5   minikube   &lt;none&gt;           &lt;none&gt;<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl describe deployments\/kubernetes-bootcamp<\/pre><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Step 2: Load Balancing<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Create service if desired<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl expose deployment\/kubernetes-bootcamp --type=\"NodePort\" --port 8080<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; $NODE_PORT=kubectl get services\/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}'\n\u276f $NODE_PORT\n31937<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; $NODE_IP=minikube ip\n<\/pre><\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Step 3: Scale Down<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt; kubectl get deployments\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\nkubernetes-bootcamp   4\/4     4            4           32h\n\u276f kubectl scale deployments\/kubernetes-bootcamp --replicas=2\ndeployment.apps\/kubernetes-bootcamp scaled\n\u276f kubectl get deployments\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\nkubernetes-bootcamp   2\/2     2            2           32h<\/pre><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&gt;  kubectl get pods -o wide\nNAME                                   READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATES\nkubernetes-bootcamp-57978f5f5d-9fwnz   1\/1     Running   0          48m   172.17.0.6   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-wx9zg   1\/1     Running   0          26m   172.17.0.7   minikube   &lt;none&gt;           &lt;none&gt;\nkubernetes-bootcamp-57978f5f5d-z8vsm   1\/1     Running   1          32h   172.17.0.5   minikube   &lt;none&gt;           &lt;none&gt;<\/pre><\/code><\/pre>\n\n\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/update\/update-intro\/\"><\/a><a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/update\/update-intro\/\">6. Update your app<\/a><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Readings Helm &#8211; The Kubernetes Package Manager &#8211; Home &#8211; GithubHelm: package manager&nbsp;(analogous to yum and apt) Charts: packages&nbsp;(analogous to debs and rpms). Home for these Charts is the&nbsp;Kubernetes Charts repository. Helm &#8211; Introduction to Helm TL;DR Helm (Documentation): Using Helm Customizing the Chart Before Installing Helm: Concepts Three Big Concepts Helm: Creating Charts Helm: CLI Common actions for Helm: Environment variables: Helm stores cache, configuration, and data based on the following configuration order: &#8211; If a HELM_*_HOME environment variable is set, it will be used&#8211; Otherwise, on systems supporting the XDG base directory specification, the XDG variables will be used&#8211; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7386,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[22,43,82,83],"tags":[],"class_list":["post-7378","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","category-kubernetes","category-virtual-machine","category-virtualbox"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/7378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=7378"}],"version-history":[{"count":0,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/7378\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=7378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=7378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=7378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}