This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Notes

This page contains my open notes. Be aware that some content may be incomplete.

1 - Kubernetes

Notes regarding Kubernetes

1.1 - Development Evironment Clusters

Notes regarding cluster for development

1.1.1 - Kind Cluster Without CNI

How to create Kind Cluster without CNI installed

Kind Cluster Without CNI

Kind installs a CNI by default. To create a kind cluster without CNI installed, simply set networking.disableDefaultCNI to true in the cluster config manifest.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  # the default CNI will not be installed
  disableDefaultCNI: true

So run the following command.

kind create cluster --config <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  # the default CNI will not be installed
  disableDefaultCNI: true
EOF

And Check that Pods that are not part of the control plane is in Pending status.

$ kubectl get pods -A
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-5d78c9869d-2gljt                     0/1     Pending   0          16s
kube-system          coredns-5d78c9869d-vnftf                     0/1     Pending   0          16s
kube-system          etcd-kind-control-plane                      1/1     Running   0          31s
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          31s
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          31s
kube-system          kube-proxy-qm5pn                             1/1     Running   0          16s
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          31s
local-path-storage   local-path-provisioner-6bc4bddd6b-s68jl      0/1     Pending   0          16s

You can also see that the nodes are not ready.

$ kubectl get nodes
NAME                             STATUS     ROLES           AGE   VERSION
kind-without-cni-control-plane   NotReady   control-plane   28s   v1.27.3

References

2 - Goals

Goals as a developer

Goals

  • Master eBPF and Cilium
  • Master AIOps

Always explore new technologies such as:

  • WASI

3 - Ideas

Brainstorm notes

3.1 - Learning Ideas

List of ideas for stepping up as a developer.

1. Cilium code read

Read and understand the internals of Cilium

2. Automated RCA

Develop Automated RCA method

3.2 - Project Ideas

List of project ideas that I can work on during my free time.

1. CNI plugin with eBPF

  • CNI, eBPF, Rust or Go

2. Distributed Tracing without code change

  • eBPF, Rust or Go

3. Distributed dnsmasq server

  • Raft, Rust or Go

4. eBPF Load Balancer

  • eBPF, Rust or Go

4 - Projects

Notes for Project sprints

4.1 - 1 Week Sprint

1 week project sprints for learning purpose.

Week 1 (4/7 ~ 4/13). DHCP Server in Rust

Goal: implement a fully functional DHCP server in Rust

Week 2 (4/14 ~ 4/20). DNS Server in Rust

Goal: extend prior week’s DHCP server to also function as DNS server

Week 3 (4/21 ~ 4/27). Distributed DNS & DHCP server in Rust

Goal: extend prior week’s DNS & DHCP server to be highly availble by using distributed concensus

4.2 - Week 1

Week 1 (4/7 ~ 4/13). DHCP Server in Rust

Week 1 (4/7 ~ 4/13). DHCP Server in Rust

Goal: implement a fully functional DHCP server in Rust

Day 1: Set up

Goals:

  • Set up Rust project
  • recall Rust basics