Os Upgrades
- What happens when one of the nodes goes down?
- If the node comes back online under 5 minutes, the
kubeletbrings the containers back up automatically. - If the node does not come back up after 5 minutes, Kubernetes considers the node as dead.
- If the pods on the downed node are part of a replica set, they are then created on other nodes.
- The point when the pod is evicted from cluster is set by the
--pod-eviction-timeoutflag:kube-controller-manager --pod-eviction-timeout=5m0s - When a node goes offline, the Master Node waits for up to 5 minutes before proclaiming that the node is dead.
- When the node comes back up after the
node-eviction-timeouthas expired, it comes up blank without any containers assigned to it.- If
pod awas part of a replicaset, it will have been created on another node. - If a pod such as
pod bis not part of a replicaset, it is gone and won’t return.
- If
- To properly move containers from a node to another node, use the
drain <node_name>command like so:kubectl drain <node_name> - The command then places any currently running containers onto other nodes instead/
- The pods are terminated on the node they were on and recreated on another node.
- The node that you run the
kubectl draincommand is then cordoned off to not allow any other containers to be assigned to it. - To
uncordonthe node, run this command on it:kubectl uncordon <node_name> - The pods that moved to the other nodes however don’t automatically move back to the node.
- If any new pods however are created, they would be applied to the node.
- Another command is
kubectl cordon <node_name>- This makes the node unschedulable for any new containers and it does not remove or stop of the existing containers on the node.
- To mark a node as unschedulable:
kubectl drain <node> - When running
kubectl get nodes, you’ll see the node in aSchedulingDisabledstate. - To bring a node out of the
SchedulingDisabledstate, we runkubectl uncordon <node> - Why are the pods placed on the ControlPlane?
- If the node has no taints placed on it, the pods will be scheduled there.
- Check with
kubectl describe nodes <node> - Usually the ControlPlane node has taints on it to stop pods being scheduled there.
- Why does
kubectl drain <node>fail a second time?- When you do a drain, if there are still pods assigned to the node, it won’t work .
- ReplicaSets, Jobs, DaemonSets pods are removed much faster.
- The ReplicaSet would then take care creating them on another node.
- If the pod is deleted during the draining process, whatever is stored on the pod will be lost forever.
- Mark a node as scheduling disabled with
kubectl cordon <node>