Move Kubernetes cluster bootstrap partially to Ansible
This commit is contained in:
parent
ecf9111f8f
commit
4d2071a5bd
58
README.md
58
README.md
@ -160,30 +160,7 @@ Added some ARM64 workers by using Ubuntu 22.04 server on Raspberry Pi.
|
|||||||
|
|
||||||
After machines have booted up and you can reach them via SSH:
|
After machines have booted up and you can reach them via SSH:
|
||||||
|
|
||||||
```bash
|
```
|
||||||
# Enable required kernel modules
|
|
||||||
cat > /etc/modules << EOF
|
|
||||||
overlay
|
|
||||||
br_netfilter
|
|
||||||
EOF
|
|
||||||
cat /etc/modules | xargs -L 1 -t modprobe
|
|
||||||
|
|
||||||
# Finetune sysctl:
|
|
||||||
cat > /etc/sysctl.d/99-k8s.conf << EOF
|
|
||||||
net.ipv4.conf.all.accept_redirects = 0
|
|
||||||
net.bridge.bridge-nf-call-iptables = 1
|
|
||||||
net.ipv4.ip_forward = 1
|
|
||||||
net.bridge.bridge-nf-call-ip6tables = 1
|
|
||||||
|
|
||||||
# Elasticsearch needs this
|
|
||||||
vm.max_map_count = 524288
|
|
||||||
|
|
||||||
# Bump inotify limits to make sure
|
|
||||||
fs.inotify.max_user_instances=1280
|
|
||||||
fs.inotify.max_user_watches=655360
|
|
||||||
EOF
|
|
||||||
sysctl --system
|
|
||||||
|
|
||||||
# Disable Ubuntu caching DNS resolver
|
# Disable Ubuntu caching DNS resolver
|
||||||
systemctl disable systemd-resolved.service
|
systemctl disable systemd-resolved.service
|
||||||
systemctl stop systemd-resolved
|
systemctl stop systemd-resolved
|
||||||
@ -206,39 +183,6 @@ apt-get install -yqq linux-image-generic
|
|||||||
apt-get remove -yq cloud-init linux-image-*-kvm
|
apt-get remove -yq cloud-init linux-image-*-kvm
|
||||||
```
|
```
|
||||||
|
|
||||||
Install packages:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
OS=xUbuntu_22.04
|
|
||||||
VERSION=1.25
|
|
||||||
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"| sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
|
|
||||||
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
|
|
||||||
|
|
||||||
rm -fv /etc/apt/trusted.gpg
|
|
||||||
|
|
||||||
curl -s https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | gpg --dearmor > /etc/apt/trusted.gpg.d/libcontainers-archive-keyring.gpg
|
|
||||||
curl -s https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/Release.key | gpg --dearmor > /etc/apt/trusted.gpg.d/libcontainers-crio-archive-keyring.gpg
|
|
||||||
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/packages-cloud-google.gpg
|
|
||||||
|
|
||||||
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
apt-get install -yqq --allow-change-held-packages apt-transport-https curl cri-o cri-o-runc kubelet=1.25.12-00 kubectl=1.25.12-00 kubeadm=1.25.12-00 cri-o=1.25.3~0
|
|
||||||
apt-mark hold kubelet kubeadm kubectl cri-o
|
|
||||||
|
|
||||||
cat << \EOF > /etc/containers/registries.conf
|
|
||||||
unqualified-search-registries = ["docker.io"]
|
|
||||||
# To pull Docker images from a mirror uncomment following
|
|
||||||
#[[registry]]
|
|
||||||
#prefix = "docker.io"
|
|
||||||
#location = "mirror.gcr.io"
|
|
||||||
EOF
|
|
||||||
sudo systemctl restart crio
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo systemctl enable crio --now
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
On master:
|
On master:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
63
ansible-kubernetes.yml
Normal file
63
ansible-kubernetes.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
- name: Pin kube components
|
||||||
|
hosts: kubernetes
|
||||||
|
tasks:
|
||||||
|
- name: Pin packages
|
||||||
|
loop:
|
||||||
|
- kubeadm
|
||||||
|
- kubectl
|
||||||
|
- kubelet
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: "/etc/apt/preferences.d/{{ item }}"
|
||||||
|
content: |
|
||||||
|
Package: {{ item }}
|
||||||
|
Pin: version 1.26.*
|
||||||
|
Pin-Priority: 1001
|
||||||
|
|
||||||
|
- name: Reset /etc/containers/registries.conf
|
||||||
|
hosts: kubernetes
|
||||||
|
tasks:
|
||||||
|
- name: Copy /etc/containers/registries.conf
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "unqualified-search-registries = [\"docker.io\"]\n"
|
||||||
|
dest: /etc/containers/registries.conf
|
||||||
|
register: registries
|
||||||
|
- name: Restart CRI-O
|
||||||
|
service:
|
||||||
|
name: cri-o
|
||||||
|
state: restarted
|
||||||
|
when: registries.changed
|
||||||
|
|
||||||
|
- name: Reset /etc/modules
|
||||||
|
hosts: kubernetes
|
||||||
|
tasks:
|
||||||
|
- name: Copy /etc/modules
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: |
|
||||||
|
overlay
|
||||||
|
br_netfilter
|
||||||
|
dest: /etc/modules
|
||||||
|
register: kernel_modules
|
||||||
|
- name: Load kernel modules
|
||||||
|
ansible.builtin.shell: "cat /etc/modules | xargs -L 1 -t modprobe"
|
||||||
|
when: kernel_modules.changed
|
||||||
|
|
||||||
|
- name: Reset /etc/sysctl.d/99-k8s.conf
|
||||||
|
hosts: kubernetes
|
||||||
|
tasks:
|
||||||
|
- name: Copy /etc/sysctl.d/99-k8s.conf
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: |
|
||||||
|
cat > /etc/sysctl.d/99-k8s.conf << EOF
|
||||||
|
net.ipv4.conf.all.accept_redirects = 0
|
||||||
|
net.bridge.bridge-nf-call-iptables = 1
|
||||||
|
net.ipv4.ip_forward = 1
|
||||||
|
net.bridge.bridge-nf-call-ip6tables = 1
|
||||||
|
vm.max_map_count = 524288
|
||||||
|
fs.inotify.max_user_instances = 1280
|
||||||
|
fs.inotify.max_user_watches = 655360
|
||||||
|
dest: /etc/sysctl.d/99-k8s.conf
|
||||||
|
register: sysctl
|
||||||
|
- name: Reload sysctl config
|
||||||
|
ansible.builtin.shell: "sysctl --system"
|
||||||
|
when: sysctl.changed
|
@ -1,24 +1,32 @@
|
|||||||
all:
|
all:
|
||||||
children:
|
children:
|
||||||
masters:
|
kubernetes:
|
||||||
hosts:
|
children:
|
||||||
master1.kube.k-space.ee:
|
masters:
|
||||||
master2.kube.k-space.ee:
|
hosts:
|
||||||
master3.kube.k-space.ee:
|
master1.kube.k-space.ee:
|
||||||
workers:
|
master2.kube.k-space.ee:
|
||||||
hosts:
|
master3.kube.k-space.ee:
|
||||||
mon1.kube.k-space.ee:
|
kubelets:
|
||||||
mon2.kube.k-space.ee:
|
children:
|
||||||
mon3.kube.k-space.ee:
|
mon:
|
||||||
storage1.kube.k-space.ee:
|
hosts:
|
||||||
storage2.kube.k-space.ee:
|
mon1.kube.k-space.ee:
|
||||||
storage3.kube.k-space.ee:
|
mon2.kube.k-space.ee:
|
||||||
storage4.kube.k-space.ee:
|
mon3.kube.k-space.ee:
|
||||||
worker1.kube.k-space.ee:
|
storage:
|
||||||
worker2.kube.k-space.ee:
|
hosts:
|
||||||
worker3.kube.k-space.ee:
|
storage1.kube.k-space.ee:
|
||||||
worker4.kube.k-space.ee:
|
storage2.kube.k-space.ee:
|
||||||
worker9.kube.k-space.ee:
|
storage3.kube.k-space.ee:
|
||||||
|
storage4.kube.k-space.ee:
|
||||||
|
workers:
|
||||||
|
hosts:
|
||||||
|
worker1.kube.k-space.ee:
|
||||||
|
worker2.kube.k-space.ee:
|
||||||
|
worker3.kube.k-space.ee:
|
||||||
|
worker4.kube.k-space.ee:
|
||||||
|
worker9.kube.k-space.ee:
|
||||||
doors:
|
doors:
|
||||||
hosts:
|
hosts:
|
||||||
100.102.3.1:
|
100.102.3.1:
|
||||||
|
Loading…
Reference in New Issue
Block a user