Ubuntu 18.04
Sponsored Link

Kubernetes : Kubeadm : Configure Worker Node
Install Kubeadm to Configure Multi Nodes Kubernetes Cluster.
On this example, Configure This example is based on the emvironment like follows.
For System requirements, each Node has uniq Hostname, MAC address, Product_uuid.
MAC address and Product_uuid are generally already uniq one if you installed OS on phisical machine or virtual machine with common procedure. You can see Product_uuid with the command [dmidecode -s system-uuid].
           |                           |                          |
       eth0|              eth0|             eth0|
+----------+-----------+   +-----------+----------+   +-----------+----------+
|   [ dlp.srv.world ]  |   | [ node01.srv.world ] |   | [ node02.srv.world ] |
|      Master Node     |   |      Worker Node     |   |      Worker Node     |
+----------------------+   +----------------------+   +----------------------+

Configure Worker Node on this section.
[2] Join in Kubernetes Cluster which is initialized on Master Node.
The command for joining is just the one [kubeadm join ***] which was shown on the bottom of the results on initial setup of Cluster.
kubeadm join --token nvr822.tjn09e85qw3a3vuz --discovery-token-ca-cert-hash sha256:866f645d9ec0da07f778b3c4abc4427e9967845d71add3252fbd691b86c0a9a7

[preflight] running pre-flight checks
        [WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh] or no builtin kernel ipvs support: map[ip_vs:{} ip_vs_rr:{} ip_vs_wrr:{} ip_vs_sh:{} nf_conntrack_ipv4:{}]
you can solve this problem with following methods:
 1. Run 'modprobe -- ' to load missing kernel modules;
2. Provide the missing builtin kernel ipvs support

        [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 17.12.1-ce. Latest validated version: 18.06
[discovery] Trying to connect to API Server ""
[discovery] Created cluster-info discovery client, requesting info from ""
[discovery] Requesting info from "" again to validate TLS against the pinned public key
[discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server ""
[discovery] Successfully established connection with API Server ""
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace
[kubelet] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[preflight] Activating the kubelet service
[tlsbootstrap] Waiting for the kubelet to perform the TLS Bootstrap...
[patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "node01.srv.world" as an annotation

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 master to see this node join the cluster.

# OK if shown [Successfully established connection ***]

[3] Verify Status on Master Node. It's Ok if all STATUS are Ready.
kubectl get nodes

NAME               STATUS   ROLES    AGE     VERSION
dlp.srv.world      Ready    master   12m     v1.12.1
node01.srv.world   Ready    <none>   6m59s   v1.12.1
node02.srv.world   Ready    <none>   2m20s   v1.12.1
[4] Verify working to deploy test Pods.
kubectl create deployment test-nginx --image=nginx

deployment.apps "test-nginx" created
kubectl scale deployment test-nginx --replicas=3

deployment.extensions/test-nginx scaled
kubectl get pods -o wide

NAME                          READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE
test-nginx-677ccfd879-7pxdn   1/1     Running   0          14s   node02.srv.world   <none>
test-nginx-677ccfd879-hpvv5   1/1     Running   0          33s   node01.srv.world   <none>
test-nginx-677ccfd879-wjj7k   1/1     Running   0          14s   node01.srv.world   <none>
kubectl expose deployment test-nginx --port 80

service "test-nginx" exposed
kubectl describe service test-nginx

Name:              test-nginx
Namespace:         default
Labels:            app=test-nginx
Annotations:       <none>
Selector:          app=test-nginx
Type:              ClusterIP
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Session Affinity:  None
Events:            <none>

<!DOCTYPE html>
<title>Welcome to nginx!</title>
<p><em>Thank you for using nginx.</em></p>
Matched Content