Last active
December 27, 2022 08:24
-
-
Save mebaysan/af34e7d09f1afdb6d6e68afa068cebe2 to your computer and use it in GitHub Desktop.
Docker and Kubernetes Installation for Fedora
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
if ! [ $USER = root ] | |
then | |
echo run this script with sudo | |
exit 3 | |
fi | |
# setting MYOS variable | |
MYOS=$(hostnamectl | awk '/Operating/ { print $3 }') | |
OSVERSION=$(hostnamectl | awk '/Operating/ { print $4 }') | |
############ DOCKER ############ | |
# cleaning | |
sudo dnf remove docker \ | |
docker-client \ | |
docker-client-latest \ | |
docker-common \ | |
docker-latest \ | |
docker-latest-logrotate \ | |
docker-logrotate \ | |
docker-selinux \ | |
docker-engine-selinux \ | |
docker-engine | |
# dnf core plugins | |
sudo dnf -y install dnf-plugins-core | |
# adding docker repo | |
sudo dnf config-manager \ | |
--add-repo \ | |
https://download.docker.com/linux/fedora/docker-ce.repo | |
# install docker compose etc. | |
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin | |
# docker service start | |
sudo systemctl start docker | |
# docker service enable | |
sudo systemctl enable docker | |
############ Git ############ | |
sudo dnf install git # we'll need to download cri-dockerd | |
############ Install GO for CRI-DOCKERD Installation ############ | |
wget https://go.dev/dl/go1.19.4.linux-amd64.tar.gz | |
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.4.linux-amd64.tar.gz | |
export PATH=$PATH:/usr/local/go/bin | |
source $HOME/.bash_profile | |
############ CRI-DOCKERD ############ | |
git clone https://github.com/Mirantis/cri-dockerd.git | |
cd cri-dockerd | |
mkdir bin | |
go build -o bin/cri-dockerd | |
mkdir -p /usr/local/bin | |
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd | |
cp -a packaging/systemd/* /etc/systemd/system | |
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service | |
systemctl daemon-reload | |
systemctl enable cri-docker.service | |
systemctl enable --now cri-docker.socket | |
############ KUBERNETES ############ | |
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo | |
[kubernetes] | |
name=Kubernetes | |
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch | |
enabled=1 | |
gpgcheck=1 | |
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg | |
exclude=kubelet kubeadm kubectl | |
EOF | |
# Set SELinux in permissive mode (effectively disabling it) | |
sudo setenforce 0 | |
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config | |
# disable swap | |
sed -i '/ swap / s/^/#/' /etc/fstab | |
swapoff -a | |
# Install Kubetools | |
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes | |
sudo systemctl enable --now kubelet | |
# To prevent the error below | |
sudo rm /etc/containerd/config.toml | |
sudo systemctl restart containerd | |
# [ERROR CRI]: container runtime is not running: output: E1227 09:43:27.228059 2382 remote_runtime.go:948] "Status from runtime service failed" err="rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService" | |
############ KUBERNETES NETWORKING ############ | |
# add ports for kubernetes | |
sudo firewall-cmd --add-port=6443/tcp | |
sudo firewall-cmd --add-port=10250/tcp | |
############ Restart Host ############ | |
echo "You successfully set up tools!" | |
echo "After the reboot you'll be able to create your cluster ^^" | |
echo "kubeadm init --cri-socket=unix:///var/run/cri-dockerd.sock <OTHER PARAMS>" | |
reboot | |
############ DEBUG ############ | |
### Get cgroup (1) | |
# docker info | grep Cgroup | |
# Then, update kubelet args (KUBELET_KUBECONFIG_ARGS) in | |
# /etc/systemd/system/kubelet.service.d/10-kubeadm.conf and add a | |
# --cgroup-driver flag corresponsing to docker cgroup (in this case <YOUR GROUP>). | |
### Swap off (2) | |
# swapoff -a | |
# sed -i '/ swap / s/^/#/' /etc/fstab | |
### Configure docker cgroup (3) | |
# create `/etc/docker/daemon.json` | |
# add the json below | |
# { | |
# "exec-opts": ["native.cgroupdriver=systemd"] | |
# } | |
# systemctl daemon-reload | |
# systemctl restart docker | |
# systemctl restart kubelet |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment