mirror of
https://github.com/clearlinux/cloud-native-setup.git
synced 2026-08-18 21:16:16 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e280f40fa | |||
| d31d78c193 | |||
| 04487a2cfe | |||
| e67630b0bd | |||
| e08c92f6d5 | |||
| d00a5ea9d8 | |||
| a9b3b5c506 | |||
| 24f248b02f | |||
| d688cbb693 |
@@ -50,14 +50,12 @@ master and also uses kubelet config via [`kubeadm.yaml`](kubeadm.yaml)
|
||||
to propagate cluster wide kubelet configuration to all workers. Customize it if
|
||||
you need to setup other cluster wide properties.
|
||||
|
||||
There are two flavors of install -
|
||||
|
||||
* `minimal`: initialize cluster, add kata runtimeclass, install canal CNI and metrics server
|
||||
* `all`: minimal, install rook storage, prometheus, ELK, nginx-ingress, etc.,
|
||||
There are different flavors to install, run `./create_stack.sh help` to get
|
||||
more information.
|
||||
|
||||
```bash
|
||||
# default is 'all'
|
||||
./create_stack.sh [minimal|all]
|
||||
# default shows help
|
||||
./create_stack.sh <subcommand>
|
||||
```
|
||||
|
||||
## Join Workers to the cluster
|
||||
|
||||
Vendored
+6
-1
@@ -13,7 +13,7 @@ $disks = 2
|
||||
$disk_prefix = File.basename(File.dirname(__FILE__), "/")
|
||||
$disk_size = "10G"
|
||||
$box = "AntonioMeireles/ClearLinux"
|
||||
$loader = File.join(File.dirname(__FILE__), "OVMF.fd")
|
||||
File.exists?("/usr/share/qemu/OVMF.fd") ? $loader = "/usr/share/qemu/OVMF.fd" : $loader = File.join(File.dirname(__FILE__), "OVMF.fd")
|
||||
$vm_name_prefix = "clr"
|
||||
$base_ip = IPAddr.new("192.52.100.10")
|
||||
$hosts = {}
|
||||
@@ -21,6 +21,10 @@ $proxy_ip_list = ""
|
||||
$driveletters = ('a'..'z').to_a
|
||||
$setup_fc = true ? (['true', '1'].include? ENV['SETUP_FC'].to_s) : false
|
||||
|
||||
if not File.exists?($loader)
|
||||
system('curl -O https://download.clearlinux.org/image/OVMF.fd')
|
||||
end
|
||||
|
||||
# We need v 1.0.14 or above for this vagrantfile to work.
|
||||
unless Vagrant.has_plugin?("vagrant-guests-clearlinux")
|
||||
system "vagrant plugin install vagrant-guests-clearlinux"
|
||||
@@ -61,6 +65,7 @@ Vagrant.configure("2") do |config|
|
||||
c.vm.provider :libvirt do |lv|
|
||||
lv.cpu_mode = "host-passthrough"
|
||||
lv.nested = true
|
||||
lv.loader = $loader
|
||||
lv.cpus = $cpus
|
||||
lv.memory = $memory
|
||||
(1..$disks).each do |d|
|
||||
|
||||
@@ -8,12 +8,23 @@ CUR_DIR=$(pwd)
|
||||
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
function print_usage_exit() {
|
||||
echo $"Usage: $0 [minimal|all]"
|
||||
exit 1
|
||||
exit_code=${1:-0}
|
||||
cat <<EOT
|
||||
Usage: $0 [subcommand]
|
||||
|
||||
Subcommands:
|
||||
|
||||
$(
|
||||
for cmd in "${!command_handlers[@]}"; do
|
||||
printf "\t%s:|\t%s\n" "${cmd}" "${command_help[${cmd}]:-Not-documented}"
|
||||
done | sort | column -t -s "|"
|
||||
)
|
||||
EOT
|
||||
exit "${exit_code}"
|
||||
}
|
||||
|
||||
function finish() {
|
||||
cd $CUR_DIR
|
||||
cd "${CUR_DIR}"
|
||||
}
|
||||
trap finish EXIT
|
||||
|
||||
@@ -22,10 +33,10 @@ function cluster_init() {
|
||||
#to enable the RuntimeClass featuregate
|
||||
sudo -E kubeadm init --config=./kubeadm.yaml
|
||||
|
||||
rm -rf $HOME/.kube
|
||||
mkdir -p $HOME/.kube
|
||||
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
|
||||
sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
||||
rm -rf "${HOME}/.kube"
|
||||
mkdir -p "${HOME}/.kube"
|
||||
sudo cp -i /etc/kubernetes/admin.conf "${HOME}/.kube/config"
|
||||
sudo chown "$(id -u):$(id -g)" "${HOME}/.kube/config"
|
||||
|
||||
# If this an interactive terminal then wait for user to join workers
|
||||
if [ -t 0 ]; then
|
||||
@@ -33,7 +44,7 @@ function cluster_init() {
|
||||
fi
|
||||
|
||||
#Ensure single node k8s works
|
||||
if [ $(kubectl get nodes | wc -l) -eq 2 ]; then
|
||||
if [ "$(kubectl get nodes | wc -l)" -eq 2 ]; then
|
||||
kubectl taint nodes --all node-role.kubernetes.io/master-
|
||||
fi
|
||||
}
|
||||
@@ -109,20 +120,25 @@ function all() {
|
||||
miscellaneous
|
||||
}
|
||||
|
||||
cd $SCRIPT_DIR
|
||||
if [[ "$#" -eq 0 ]]; then
|
||||
all
|
||||
exit
|
||||
fi
|
||||
declare -A command_handlers
|
||||
command_handlers[init]=cluster_init
|
||||
command_handlers[cni]=cni
|
||||
command_handlers[minimal]=minimal
|
||||
command_handlers[all]=all
|
||||
command_handlers[help]=print_usage_exit
|
||||
|
||||
case "$1" in
|
||||
minimal)
|
||||
minimal
|
||||
;;
|
||||
all)
|
||||
all
|
||||
;;
|
||||
*)
|
||||
print_usage_exit
|
||||
;;
|
||||
esac
|
||||
declare -A command_help
|
||||
command_help[init]="Only inits a cluster using kubeadm"
|
||||
command_help[cni]="Setup network for running cluster"
|
||||
command_help[minimal]="init + cni + kata + metrics"
|
||||
command_help[all]="minimal + storage + monitoring + miscellaneous"
|
||||
command_help[help]="show this message"
|
||||
|
||||
cd "${SCRIPT_DIR}"
|
||||
|
||||
cmd_handler=${command_handlers[${1:-none}]:-unimplemented}
|
||||
if [ "${cmd_handler}" != "unimplemented" ]; then
|
||||
"${cmd_handler}"
|
||||
else
|
||||
print_usage_exit 1
|
||||
fi
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta1
|
||||
kind: InitConfiguration
|
||||
nodeRegistration:
|
||||
criSocket: /var/run/crio/crio.sock
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
set -o nounset
|
||||
|
||||
#Cleanup
|
||||
sudo -E kubeadm reset -f --cri-socket="/var/run/crio/crio.sock"
|
||||
reset_cluster() {
|
||||
sudo -E kubeadm reset -f
|
||||
}
|
||||
reset_cluster
|
||||
|
||||
for ctr in $(sudo crictl ps --quiet); do
|
||||
sudo crictl stop "$ctr"
|
||||
@@ -15,9 +18,10 @@ for pod in $(sudo crictl pods --quiet); do
|
||||
done
|
||||
|
||||
#Forcefull cleanup all artifacts
|
||||
#This is needed is things really go wrong
|
||||
#This is needed if things really go wrong
|
||||
sudo systemctl stop kubelet
|
||||
sudo systemctl stop crio
|
||||
systemctl is-active crio && sudo systemctl stop crio
|
||||
systemctl is-active containerd && sudo systemctl stop containerd
|
||||
sudo pkill -9 qemu
|
||||
sudo pkill -9 kata
|
||||
sudo pkill -9 kube
|
||||
@@ -39,8 +43,11 @@ sudo -E bash -c "rm -r /var/run/kata-containers/*"
|
||||
sudo rm -rf /var/lib/rook
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable kubelet crio
|
||||
sudo systemctl restart crio
|
||||
sudo systemctl is-active crio && sudo systemctl stop crio
|
||||
sudo systemctl is-active containerd && sudo systemctl stop containerd
|
||||
sudo systemctl is-enabled crio && sudo systemctl restart crio
|
||||
sudo systemctl is-enabled containerd && sudo systemctl restart containerd
|
||||
|
||||
sudo systemctl restart kubelet
|
||||
|
||||
sudo -E kubeadm reset -f --cri-socket="/var/run/crio/crio.sock"
|
||||
reset_cluster
|
||||
|
||||
@@ -22,6 +22,8 @@ fi
|
||||
sudo mkdir -p /etc/sysctl.d/
|
||||
cat <<EOT | sudo bash -c "cat > /etc/sysctl.d/60-k8s.conf"
|
||||
net.ipv4.ip_forward=1
|
||||
net.ipv4.conf.default.rp_filter=1
|
||||
net.ipv4.conf.all.rp_filter=1
|
||||
EOT
|
||||
sudo systemctl restart systemd-sysctl
|
||||
|
||||
@@ -50,8 +52,6 @@ sudo systemctl daemon-reload
|
||||
echo "The following kubelet command may complain... it is not an error"
|
||||
sudo systemctl enable --now kubelet crio || true
|
||||
|
||||
sudo mkdir -p /usr/libexec/cni /opt/cni
|
||||
[ ! -e /opt/cni/bin/cni ] && sudo ln -s /usr/libexec/cni /opt/cni/bin
|
||||
#Ensure that the system is ready without requiring a reboot
|
||||
sudo swapoff -a
|
||||
sudo systemctl restart systemd-modules-load.service
|
||||
|
||||
Reference in New Issue
Block a user