docker_advanced_k8s_init

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docker_advanced_k8s_init [2020/05/01 13:46] andonovjdocker_advanced_k8s_init [2020/05/02 14:13] (current) andonovj
Line 1: Line 1:
 =====Overview===== =====Overview=====
-The master instance is the main instance which controls the applications or the containers on the cluster. Don't forgetkubernetes consists of at least 1 master and 2 node. In total 2 machines which can run the application.+The master instance is the main instance which controls the applications or the containers on the cluster. Don't forget, in our case, kubernetes consists of at least 1 master and 2 node. In total 2 machines which can run the application.
  
 So let's initialize the cluster from the master instance: So let's initialize the cluster from the master instance:
Line 94: Line 94:
  
 ====Configure Calico Pod Network==== ====Configure Calico Pod Network====
-So which podnetwork, we will use. As already mentioned if you are using Kubernetes >1.16, then you cannot use the weave network. Because of that I have used the Calico:+So which podnetwork, we will use. As already mentioned if you are using Kubernetes >1.16, then you cannot use the weave network. Because of that I had to use Calico:
  
 <Code:shell|Apply Calico Pod network> <Code:shell|Apply Calico Pod network>
Line 162: Line 162:
  
 That concludes the initialization of the cluster. In the next section we will discuss how to add new nodes :) That concludes the initialization of the cluster. In the next section we will discuss how to add new nodes :)
 +
 +=====Joint to the cluster=====
 +Be sure that you installed the necessary packages from the introduction section. Once this is done we can add the node to the cluster as follow:
 +
 +<Code:shell|Add node>
 +root@node-1:~# kubeadm join 192.168.50.10:6443 --token k7cnjt.c0vkn3i6sc9qp2it --discovery-token-ca-cert-hash sha256:8c7874be67b9670c52a729b7a26bdefb4b55f5a49402624c0d262c0253732228
 +W0421 10:28:13.551137   21280 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
 +[preflight] Running pre-flight checks
 +        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
 +[preflight] Reading configuration from the cluster...
 +[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
 +[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace
 +[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
 +[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
 +[kubelet-start] Starting the kubelet
 +[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
 +
 +This node has joined the cluster:
 +* Certificate signing request was sent to apiserver and a response was received.
 +* The Kubelet was informed of the new secure connection details.
 +
 +Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
 +
 +root@node-1:~#
 +</Code>
 +
 +As with the master node, it might take sometime until you see the node as Ready and all components running from the Control Panel Machine:
 +
 +<Code:shell|Check the newly added Node>
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE   VERSION
 +k8s-master   Ready    master   67m   v1.18.2
 +node-1       Ready    <none>   82s   v1.18.2
 +ubuntu@k8s-master:~/.kube$
 +ubuntu@k8s-master:~/.kube$ kubectl get pods --all-namespaces
 +NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
 +kube-system   calico-kube-controllers-77c5fc8d7f-88lsl   1/    Running            65m
 +kube-system   calico-node-bqw8q                          1/1     Running            65m
 +kube-system   calico-node-wwfc5                          0/1     Running            75s
 +kube-system   coredns-66bff467f8-rgh8d                   1/    Running            67m
 +kube-system   coredns-66bff467f8-tql72                   1/    Running            67m
 +kube-system   etcd-k8s-master                            1/1     Running            67m
 +kube-system   kube-apiserver-k8s-master                  1/1     Running            67m
 +kube-system   kube-controller-manager-k8s-master         1/    Running            67m
 +kube-system   kube-proxy-hnmxb                           1/    Running            75s
 +kube-system   kube-proxy-jkmql                           1/    Running            67m
 +kube-system   kube-scheduler-k8s-master                  1/1     Running            67m
 +</Code>
 +
 +Please execute that step on all nodes. In the end you should have something like this:
 +
 +<Code:shell|Check the newly added Node>
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE   VERSION
 +k8s-master   Ready    master   77m   v1.18.2
 +node-1       Ready    <none>   11m   v1.18.2
 +node-2       Ready    <none>   88s   v1.18.2
 +ubuntu@k8s-master:~/.kube$ kubectl get pods --all-namespaces
 +NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
 +kube-system   calico-kube-controllers-77c5fc8d7f-88lsl   1/    Running            75m
 +kube-system   calico-node-bqw8q                          1/1     Running            75m
 +kube-system   calico-node-fl6ft                          1/1     Running            84s
 +kube-system   calico-node-wwfc5                          1/1     Running            11m
 +kube-system   coredns-66bff467f8-rgh8d                   1/    Running            77m
 +kube-system   coredns-66bff467f8-tql72                   1/    Running            77m
 +kube-system   etcd-k8s-master                            1/1     Running            77m
 +kube-system   kube-apiserver-k8s-master                  1/1     Running            77m
 +kube-system   kube-controller-manager-k8s-master         1/    Running            77m
 +kube-system   kube-proxy-hnmxb                           1/    Running            11m
 +kube-system   kube-proxy-jkmql                           1/    Running            77m
 +kube-system   kube-proxy-s4nrh                           1/    Running            84s
 +kube-system   kube-scheduler-k8s-master                  1/1     Running            77m
 +</Code>
 +
 +====Assign role to a Node====
 +You saw that our nodes have no roles. We have 1 master and that is that :)
 +
 +<Code:none|Nodes' roles>
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE   VERSION
 +k8s-master   Ready    master   77m   v1.18.2
 +node-1       Ready    <none>   11m   v1.18.2
 +node-2       Ready    <none>   88s   v1.18.2
 +</Code
 +
 +So, how to assign roles to the node. Well, in Kubernetes, we assign labels. Labels are assigned as follows:
 +
 +<Code:none|Assign label>
 +kubectl label node <node name> node-role.kubernetes.io/<role name>=<key - (any name)> - To assign the label
 +kubectl label node <node name> node-role.kubernetes.io/<role name> - To remove the label
 +</Code>
 +
 +So let's assign worker to our node-1 and node-2
 +
 +<Code:shell|Assign Labels to Node-1 and Node-2>
 +ubuntu@k8s-master:~/.kube$ kubectl label node node-1 node-role.kubernetes.io/worker=worker
 +node/node-1 labeled
 +ubuntu@k8s-master:~/.kube$ kubectl label node node-2 node-role.kubernetes.io/worker=worker
 +node/node-2 labeled
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE     VERSION
 +k8s-master   Ready    master   83m     v1.18.2
 +node-1       Ready    worker   17m     v1.18.2
 +node-2       Ready    worker   7m39s   v1.18.2
 +ubuntu@k8s-master:~/.kube$
 +</Code>
 +
 +Alternatively we can remove a label from a node. So let's remove and add that label again on Node-2:
 +
 +<Code:shell|Remove and Add Label on Node-2>
 +ubuntu@k8s-master:~/.kube$ kubectl label node node-2 node-role.kubernetes.io/worker-
 +node/node-2 labeled
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE   VERSION
 +k8s-master   Ready    master   86m   v1.18.2
 +node-1       Ready    worker   20m   v1.18.2
 +node-2       Ready    <none>   10m   v1.18.2
 +ubuntu@k8s-master:~/.kube$ kubectl label node node-2 node-role.kubernetes.io/worker=worker
 +node/node-2 labeled
 +ubuntu@k8s-master:~/.kube$ kubectl get nodes
 +NAME         STATUS   ROLES    AGE   VERSION
 +k8s-master   Ready    master   87m   v1.18.2
 +node-1       Ready    worker   20m   v1.18.2
 +node-2       Ready    worker   11m   v1.18.2
 +ubuntu@k8s-master:~/.kube$
 +</Code>
 +
  • docker_advanced_k8s_init.1588340795.txt.gz
  • Last modified: 2020/05/01 13:46
  • by andonovj