28
ClusterLabs Summit 2020 Improving high-availability Ondrej Mular Software engineer [email protected] Brno, Feb 2020 ClusterLabs Summit 2020 Kubernetes on bare metal 1

Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Improving high-availability

Ondrej MularSoftware [email protected]

Brno, Feb 2020

ClusterLabs Sum

mit 20

20

Kuberneteson bare metal

1

Page 2: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Introduction

Something about me

▸ PCS developer

▸ improving HA capabilities of Kubernetes/OpenShift bare metal clusters・ working together with Andrew Beekhof

・ identifying differences between cloud and bare metal deployments

・ fencing

・ maintenance mode

2

Page 3: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

ClusterLabs Sum

mit 20

20

3

Page 4: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Disclaimer: This is not intended to be detailed user guide for Kubernetes, but more of brief introduction to the principles used.

Kubernetes

4

Page 5: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

What is Kubernetesa.k.a. k8s

▸ Container-orchestration system

▸ Automation of container operations・ deployment

・ scaling

・ management

5

Page 6: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Under the hood

Kubernetes

https://kubernetes.io/docs/concepts/overview/components/

6

Page 7: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

Kubernetes Objects

https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/

An object is a data structure (usually seen as yaml) stored inside kube-api-server.

Desired state of an object is described under the spec field.

Current status of the Object can be found under status field.

7

Page 8: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

Pod

A Pod is basic execution unit. It encapsulates one or more containers.

All containers in a pod share an IP address, IPC, hostname, and other resources.

A Pod represents processes running on a cluster.

Basic shedulable unit. Kube-scheduler assigns a Node to a Pod to run on.

You should almost never create a Pod by yourself, but instead use higher level

resource types such as Deployment, ReplicaSet, Service, ...

A building block

8

Page 9: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

Extending APICustom resource definition

It is possible to extend Kubernetes API by creating object of type

CustomResourceDefinition (CRD). This allows to store objects of a custom type

on API server. This alone does nothing, except for storing the object in

Kubernetes.

9

Page 10: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes

Controller

Interacts with cluster via API server.

Responsible for at least one resource type.

The controller for that resource is responsible for making the current state (status field) come closer to that desired state (spec field).

Note: Controller is not an Operator. See: https://www.openshift.com/learn/topics/operators

10

Control loop

Act Observe

Check for differences

Page 11: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Kubernetes cluster has no build-in node management. Everything has to be managed externally.

Kubernetes

11

Page 12: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Cluster API

ClusterLabs Sum

mit 20

20

12

Page 13: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Cluster API

13

https://github.com/kubernetes-sigs/cluster-api

The Cluster API is a Kubernetes project to bring declarative, Kubernetes-style APIs to cluster creation, configuration, and management. It provides optional, additive functionality on top of core Kubernetes.

Cluster API readme

Page 14: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Cluster API

What does it mean?

14

Cluster API is not part of Kubernetes project. Cluster Lifecycle SIG is

responsible for the project.

The Kubernetes cluster is itself an object that can be managed just like any other

Kubernetes object. Similarly, machines that make up the cluster are also treated

as a Kubernetes resource Machine.

The API has two pieces - the core API, and a (cloud) provider implementation

such as:

▸ AWS

▸ Google cloud

▸ …

Page 15: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Cluster API

Node vs Machine objects

15

▸ Kubernetes core resource

▸ created on kubelet startup

▸ Pod is scheduled to run on a Node

Node

▸ Custom resource by Cluster API

▸ created by user/cluster

▸ declarative spec for a Node

▸ on creation・ a provider-specific controller will handle

provisioning and installation of a new host

・ the host is then registered as a new Node

matching the Machine spec

Machine

Page 16: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

This works nicely for the cloud.What about bare-metal?Bare-metal provider for cluster API should be enough, right?

Cluster API

16

Page 17: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Metal3

ClusterLabs Sum

mit 20

20

17

Page 18: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Metal3

18

https://metal3.io/documentation.html

The Metal³ project (pronounced: Metal Kubed) exists to provide components that allow you to do bare metal host management for Kubernetes. Metal³ works as a Kubernetes application, meaning it runs on Kubernetes and is managed through Kubernetes interfaces.

Metal3 project documentation

Page 19: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Metal3

What it provides

19

▸ Bare-metal provider implementation for cluster API・ build on top of Ironic

・ running as a cluster service

▸ Introduces new CRD BareMetalHost・ inventory

・ configuration for remote management

Page 20: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Metal3

Host, Machine and Node?

20

3 abstraction layers

BareMetalHostMetal3

MachineCluster API

NodeKubernetes

Page 21: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Metal3

Cloud vs. bare-metal

21

Cloud

▸ creating a new machine is cheap

▸ no reboot method

▸ immutable machine configuration

▸ storage is attached externally

▸ no need to deal with HW issues

▸ impossible to 'create' a new machine

▸ reboot is useful

▸ mutable configuration

▸ storage is part of a cluster

▸ need to deal with HW defects

Bare metal

Page 22: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

High-availability on bare-metal

ClusterLabs Sum

mit 20

20

22

Page 23: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

High-availability on bare-metal

Health-checking

23

https://github.com/openshift/machine-api-operator

Monitoring health of Machines using Kubernetes node conditions.

Initiating appropriate remediation method

▸ reboot (power fencing)

▸ deprovisioning

Page 24: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

High-availability on bare-metal

Power fencing

24

https://github.com/kubevirt/machine-remediation

Trying to avoid reprovisioning as it is slow and may

cause even more faults during underlying storage

solution resync.

No need to reprovision a machine every time. Reboot

might solve the issue.

No reboot method in cluster API.

Challenge

MachineRemediation CR and Bare Metal Remediator

controller (which is using cluster API) will try to just

reboot a node.

Simulating reboot with power cycling (power off,

power on) via BHM object

Machine Disruption Budget - for limiting fencing

floods

Solution

Page 25: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

High-availability on bare-metal

Maintenance mode

25

Challenges

https://github.com/kubevirt/node-maintenance-operator

SW upgrades

HW fix

No workload running on a node

Server-side drain and cordon implementation

Node Maintenance Operator and NodeMaintenance

CR. Possible to put a Node in to maintenance mode

via Kubernetes API

Solution

Page 26: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

High-availability on bare-metal

Future plans

26

▸ get implementation of・ health-checking to upstream OpenShift

・ reboot remediation method into Metal3

▸ find right place for server-side drain and cordon implementation・ trying to get it accepted as a KEP

Page 27: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

Questions?

Q&A

27

Page 28: Kubernetes on bare metal - Pacemaker...Kubernetes introduction to the principles used. 4 ClusterLabs Summit 2020 Kubernetes What is Kubernetes a.k.a. k8s Container-orchestration system

ClusterLabs Summit 2020

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHat

Thank you

ClusterLabs Sum

mit 20

20

28