meta-virtualization/recipes-containers/kubernetes
Bruce Ashfield db7647c53e kubernetes: update to v1.23.2
Bumping kubernetes to version v1.23.2-rc.0-26-gfa546d8cc76, which comprises the following commits:

    cce0b96068c fix nil pointer in create secret commands
    27a66989d0f Fix order of commands in the snapshot tests for persistent volumes
    cc6c36f286d client-go: Clear the ResourceVersionMatch on paged list calls
    271a9f0e58d Improving performance of EndpointSlice controller metrics cache
    98cc4f9e96a fix the error when cleaning up jobs for cronjob
    6ca361089db Update CHANGELOG to add missing release notes.
    40d718778d4 apf: ensure exempt request notes the classification
    77b0a633575 Update CHANGELOG/CHANGELOG-1.23.md for v1.23.1
    aef116487af Release commit for Kubernetes v1.23.2-rc.0
    86ec240af8c Release commit for Kubernetes v1.23.1
    1292aee8707 add gce loadbalancer no-op finalizer and existingFwdRule tests
    40c6f562eb3 disable gce service handling if has rbs forwarding rule
    41b00595137 add ELBRbsFinalizer
    036fd24b91c add gce elb rbs opt-in annotation
    78e8cb0743c cherry pick of knp 0.0.27
    0072226ca87 Re-introduce removed kubectl --dry-run values.
    c237c5c78fc Point flowcontrol users at v1beta2
    c836ebae52f [go1.17] Update to go1.17.5
    d065f7ffe77 dependencies: Update golang.org/x/net to v0.0.0-20211209124913-491a49abca63
    ea103cb23a9 mount-utils: Detect potential stale file handle
    1346242fd57 Skip creating HNS loadbalancer with empty endpoints
    38a678fccfb Add regression test for CPUManager distribute NUMA algorithm
    6d437c7e827 Add unit test for CPUManager distribute NUMA algorithm verifying fixes
    53fd9db1629 Fix accounting bug in CPUManager distribute NUMA policy
    9cb973ac5ee Fix error handling in CPUManager distribute NUMA tests
    462f3c90b05 Add a sum() helper to the CPUManager cpuassignment logic
    03666ecf4fc Allow the map.Values() function in the CPUManager to take a set of keys
    22b6be8c2cb Fix CPUManager algo to calculate min NUMA nodes needed for distribution
    471dd78f5ea Fix unit tests following bug fix in CPUManager for map functions (2/2)
    1db0c5136e7 Fix unit tests following bug fix in CPUManager for map functions (1/2)
    18392c0c4ca Fix bug in CPUManager map.Keys() and map.Values() implementations
    4c7bcbddd62 Ensure we balance across *all* NUMA nodes in NUMA distribution algo
    d1248480b20 Short-circuit CPUManager distribute NUMA algo for unusable cpuGroupSize
    3a9b3072612 Round the CPUManager mean and stddev calculations to the nearest 1000th
    5fc309181ab updated deprecation messages from 1.23 to 1.24
    f94a022c1bb kubelet: set failed phase during graceful shutdown
    b63d5a805b3 kubeadm: avoid requiring a CA key during kubeconfig expiration checks
    a18dbc12a46 kubeadm: print the CA of kubeconfig files in "check expiration"
    880e0ac50f7 kubeadm: validate local etcd certficates during expiration checks
    f9c8af54ccb publishing-bot/doc: add component-helpers to the readme
    3245fe216f2 publishing-bot/rules: remove non existing component-helpers branch 1.19 from the rules
    57f88ec404e Changelog: mention kube-scheduler bits deprication
    f42cbbbff43 rbd: initialize ceph monitors slice with an empty value.
    0a1d2914614 Direct v2betaX users to migrate to HPA v2
    064a272ee03 DelegateFSGroupToCSIDriver e2e: skip tests with chgrp
    dd1b0a12471 Update CHANGELOG/CHANGELOG-1.23.md for v1.23.0
    8aef834386e [go1.17] Update to go1.17.4

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2022-01-06 21:20:15 -05:00
..
kubernetes kubernetes: add sysctl.d configuration 2021-12-15 12:59:12 -05:00
kubernetes_git.bb kubernetes: update to v1.23.2 2022-01-06 21:20:15 -05:00
README.md kubernetes: add README 2021-12-15 12:55:28 -05:00

k8s: Kubernetes

meta-virtualization provides the recipes and packages suitable for a k8s cluster instance.

For a kubernetes controller:

  • packagegroup-k8s-host

For a kubernetes worker/node:

  • packagegroup-k8s-node

If kernel issues or missing features are detected, consider adding the "kernel-modules" package to your image (Since the configuration and RDEPENDS may not be correct for your kernel + k8s version).

CNI

The CNI base packages provide core support and are installed by default as dependencies of the kubernetes packages. Minimal configuration and startup are provided, but you will need to apply the CNI configuration of your choice after boot (see below fo an example)

Configure and initialize the host

A convenience script "k8s-init" is provided to do basic setup on the controller node. After the contoller boots, run it for kubeadm setup and other basic configuration.

Once the node is ready ('kubectl get nodes' to check), follow the instructions for copying the token to your home directory, and apply the networking configuration of choice (flannel in the example):

  % mkdir -p $HOME/.kube
  % cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  % chown $(id -u):$(id -g) $HOME/.kube/config

  % kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Configuration and initialize the node/worker

Once the kubernetes node has booted, it is ready to join the cluster. Some basica configuration is done via the packages and a systctl.d configuration snippet.

Join the cluster (substitute your controller ip and token information):

kubeadm join <controller ip>:6443 --token cq8ngi.6m6mgqi9zf08ypc4 --discovery-token-ca-cert-hash sha256:6064ae531c8dad824f9eadff030f83ec84d00796fac75f1adbd343255eb34fd2

Notes:

Memory:

if running under qemu, the default of 256M of memory is not enough, k3s will OOM and exit.

Boot with qemuparams="-m 2048" to boot with 2G of memory (or choose the appropriate amount for your configuration)

CPUs:

Kubernetes needs at least two cpus, so ensure your qemuboot is smp of at least 2, and/or that your hardware has the required capabilties.

Disk:

if using qemu and core-image* you'll need to add extra space in your disks to ensure containers can start. The following in your image recipe, or local.conf would add 2G of extra space to the rootfs:

IMAGE_ROOTFS_EXTRA_SPACE = "2097152"

Example qemux86-64 boot line:

runqemu qemux86-64 nographic kvm slirp qemuparams="-m 2048"

k8s logs can be seen via:

% journalctl -u kubelet

or

% journalctl -xe

Example output from qemux86-64:

If you've lost the join token, you can create a new one, or list existing ones:

root@qemux86-64-7b:~# kubeadm token create --print-join-command
kubeadm join 10.10.10.117:6443 --token dr71zq.y5vi3s2n2antvcej --discovery-token-ca-cert-hash sha256:6064ae531c8dad824f9eadff030f83ec84d00796fac75f1adbd343255eb34fd2

root@qemux86-64-7b:~# kubeadm token list
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
cq8ngi.6m6mgqi9zf08ypc4   23h         2021-12-16T16:58:02Z   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token
dr71zq.y5vi3s2n2antvcej   23h         2021-12-16T17:46:28Z   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token
root@qemux86-64:~# kubectl get nodes
NAME            STATUS   ROLES                  AGE   VERSION
qemux86-64-7b   Ready    control-plane,master   51m   v1.23.1-rc.0.1+dd1b0a12471310-dirty
qemux86-64-9d   Ready    <none>                 49m   v1.23.1-rc.0.1+dd1b0a12471310-dirty