ืฉืืื! ืฉืื ืกืจืืื, ืื ื DevOps ื-Surf. ืืืืงืช DevOps ื-Surf ืฉืืืคืช ืื ืจืง ืืืฆืืจ ืืื ืืจืืงืฆืื ืืื ืืืืืื ืืืฉืื ืชืืืืื ืขืืืื, ืืื ืื ืืืงืืจ ืืืืืฉื ืืืืคื ืืงืืืื ืืื ืืืืืืืช ืขืืื ืืืช ืื ืืชืฉืชืืช ืฉืื ืืื ืืชืฉืชืืช ืืืงืื.
ืืืื ืืืืจ ืืขื ืขื ืืฉืื ืืืื ืืขืจืืืช ืืืื ืืืืืื ืืืืืืืช ืฉื ืชืงืื ื ืืื ืืืืื ืืืืื ืืืคืฆื CentOS 8 ืืขื ืื ืฉืืฉ CRI-O ืืืืฆื ืืืืืืจ ืืืืืจืืช ืกืืืืช ืืคืขืื ืขืืืจ ืงืืืจื ื.
ืืืืข Docker ืืื ื ืืืื ื- CentOS 8?
ืืืืจ ืืชืงื ืช ืืืืืืจืืช ืืขืืงืจืืืช ืืืืจืื ืืช rhel 8 ืื CentOS 8 ืื ืืคืฉืจ ืฉืื ืืฉืื ืื: ืืืคืฆืืช ืืืืืืจืื ืืจืฉืืืื ืืืื ืืื ื ืืืืืื ืืช ืืืคืืืงืฆืื ืกึทืึธืจ, ืฉืืืืืคืืช ืืืืื ื ืืืืืืืืืืืช ืืคืื ืงืฆืืื ืืืช ืืืืืืช ืคืืืื, Buildah (ื ืืื ืืืคืฆื ืืืจืืจืช ืืืื) ื CRI-O. ืืืช ืืฉื ืืืฉืื ืืขืฉื ืฉื ืชืงื ืื ืฉืคืืชืื, ืืื ืืืชืจ, ืขื ืืื Red Hat ืืืกืืจืช ืคืจืืืงื Open Container Initiative (OCI).
ืืืืจื ืฉื OCI, ืฉืืื ืืืง ื-The Linux Foundation, ืืื ืืืฆืืจ ืกืื ืืจืืื ืคืชืืืื ืืชืขืฉืืื ืขืืืจ ืคืืจืืืื ืฉื ืงืื ืืืื ืจ ืืืื ื ืจืืฆื ืืคืืชืจืื ืืกืคืจ ืืขืืืช ืื-ืืื ืืช. ืจืืฉืืช, ืื ืื ืกืชืจื ืืช ืืคืืืืกืืคืื ืฉื ืืื ืืงืก (ืืืฉื, ืืืืง ืฉืื ืชืืื ื ืฆืจืืื ืืืฆืข ืคืขืืื ืืืช, ืืื ืกึทืึธืจ ืืื ืกืื ืฉื ืงืืืืื ื ืืื ืืืื). ืฉื ืืช, ืื ืืืืืื ืืืื ืืช ืื ืืืืงืืืื ืืงืืืืื ืืชืืื ื ืกึทืึธืจ. ืฉืืืฉืืช, ืื ืืืื ืชืืืืื ืืืืืืื ืืืจืืฉืืช ืืขืกืงืืืช ืฉื ืคืืืคืืจืืืช ืืกืืจืืืช ืืืืืืืช ืืคืจืืกื, ื ืืืื ืืืืฉื ืฉื ืืคืืืงืฆืืืช ืืืืืืช (ืืืืืื, Red Hat OpenShift).
ืืืืืืช ืกึทืึธืจ ืืืืชืจืื ืืช ืฉื ืืชืืื ื ืืืืฉื ืืืจ ืชืืืจื ืืคืืจืื ืืกืืื ื
ืืฉืื ืืฆืืื ืืืื ืคืื ืงืฆืืื ืืืืช ืืฉ ืืจืืืื ืืขืจืืื ืืืืฆืขืช:
- ืคืืืื - ืืื ืืจืืงืฆืื ืืฉืืจื ืขื ืืืืืื ืืืืกืื ืชืืื ืืช ืืืืฆืขืืช ืชืืืื runC;
- Buildah - ืืจืืื ืืืขืืืช ืชืืื ืืช ืืจืืฉืื;
- CRI-O - ืกืืืืช ืืคืขืื ืขืืืจ ืืขืจืืืช ืชืืืืจ ืืืืืืช (ืืืืืื, Kubernetes).
ืื ื ืืืฉื ืฉืืื ืืืืื ืืช ืกืืืช ืืืื ืืจืืงืฆืื ืืืืืืช ืืื ืืจืืืื ืืืืกื ืืช, ืืืืืฅ ืืกืคืง ืืื ืืืืืจืืช ืืืืืจ ืงืืืจื ื c runC ืืกืคืจืืืช ืืจืื ื ืืืื ืืืืฆืขืืช CRI-O:
CRI-O ะธ ืงืืืจื ื ืืืืืง ืืืืชื ืืืืืจ ืฉืืจืืจ ืืชืืืื (ืืืจืืฆืช ืืชืืืืืช ืคืฉืืื ืืืื: ืืจืกืืืช ืขืืงืจืืืช ืงืืืจื ื ะธ CRI-O ืืืคืคืื), ืืื, ืืืชืืฉื ืืืชืืงืืืช ืืืืืงื ืืืื ืืืงืืคื ืฉื ืคืขืืืช ืืืกื ืืช ืื ืขื ืืื ืืคืชืืื, ื ืืชื ืื ื ืืช ืืืืืช ืืฆืคืืช ืืืฆืืืืช ืืืจืืืช ืื ืืชื ืช ืืืฉืื ืืคืขืืื ืืื ืชืจืืืฉื ืฉืืืืฉ (ืงืืืืืช ืืืกืืช ืืืขืืื ืื ืืื CRI-O ืืขืืืช ืกึทืึธืจ ืขืงื ืืืืื ืืืืื ืช ืฉื ืคืื ืงืฆืืื ืืืืช).
ืืขืช ืืืชืงื ื ืงืืืจื ื "ืืจื ื ืืื ื" (ืืคื OCI, ืืืืื) ืืืืฆืขืืช CRI-O ืขื CentOS 8 ื ืชืงืื ื ืืืื ืงืฉืืื ืงืืื, ืฉืขื ืืืช ืืชืืืจื ื ืืืฆืืื. ืืฉืื ืืฉืชืฃ ืืชืื ืืืืจืืืช ืืชืงื ื ืืืืืจื, ืฉืืกื ืืื ืืืงื ื-10 ืืงืืช.
ืืืฆื ืืคืจืืก Kubernetes ื- CentOS 8 ืืืืฆืขืืช ืืกืืจืช CRI-O
ืชื ืืื ืืืงืืืื: ื ืืืืืช ืฉื ืืืจื ืืื ืืคืืืช (2 ืืืืืช, 4 GB RAM, ืืคืืืช 15 GB ืืืกืื) ืขื ืืืชืงื CentOS 8 (ืืืืืฅ ืคืจืืคืื ืืชืงื ืช "ืฉืจืช"), ืืื ืขืจืืื ืขืืืจื ื-DNS ืืืงืืื (ืืืืฆื ืืืจืื, ื ืืชื ืืืกืชืืจ ืขื ืขืจื ื- /etc/hosts). ืืื ืชืฉืื
ืื ื ืืืฆืขืื ืืช ืื ืืคืขืืืืช ืขื ืืืืจื ืืืฉืชืืฉ ืืฉืืจืฉ, ืืืืืจ.
- ืืฉืื ืืจืืฉืื, ื ืืืืจ ืืช ืืขืจืืช ืืืคืขืื, ื ืชืงืื ืื ืงืืข ืชืืืช ืืงืืืื ืขืืืจ CRI-O.
- ืืืื ื ืขืืื ืืช ืืขืจืืช ืืืคืขืื:
dnf -y update
- ืืืืจ ืืื ืขืืื ืืืืืืจ ืืช ืืืืช ืืืฉ ื-SELinux. ืืื ืืื ืชืืื ืืกืืืื ืื ืืขืืื ืืืืจื ืื ืืืืจืืื ืฉืื ื. ืืชื ืืืื ืืืืืืจ ืืืืช ืืฉ ืืืชืื ืืืืืฆืืช ืืืช
ืชืืขืื , ืื, ืื ืืชื ื ืืฆื ืืจืฉืช ืืืืื ื ืื ืืฉืชืืฉ ืืืืืช ืืฉ ืฉื ืฆื ืฉืืืฉื, ืฉื ื ืืช ืืืืจ ืืจืืจืช ืืืืื ืืืืื ืื ืืื ืืช ืืืืช ืืืฉ:firewall-cmd --set-default-zone trusted firewall-cmd --reload
ืืื ืืืืืช ืืช ืืืืช ืืืฉ ื ืืชื ืืืฉืชืืฉ ืืคืงืืื ืืืื:
systemctl disable --now firewalld
ืืฉ ืืืืืช ืืช SELinux ืื ืืขืืืจ ืืืฆื "ืืชืืจื ื":
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- ืืขื ืืช ืืืืืื ืืืืื ืืืืืืืืช ืืืจืืฉืื, ืืืืจ ืืช ืืืขืื ื ืืืืืืืืืช ืฉื ืืืืื "br_netfilter" ืืขืช ืืคืขืืช ืืืขืจืืช:
modprobe overlay modprobe br_netfilter echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf dnf -y install iproute-tc
- ืืื ืืืคืขืื ืืขืืจืช ืื ืืช ืืขืืืื ืชืขืืืจื ื ืืื, ื ืืฆืข ืืช ืืืืืจืืช ืืืชืืืืืช:
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF
ืืื ืืช ืืืืืจืืช ืฉื ืขืฉื:
sysctl --system
- ืืืืจ ืืช ืืืจืกื ืื ืืจืฉืช CRI-O (ืืจืกื ืืจืืืืช CRI-O, ืืคื ืฉืืืจ ืืืืืจ, ืชืชืืื ืืืจืกื ืื ืืจืฉืช ืงืืืจื ื), ืืื ืืืจืกื ืืืฆืืื ืืืืจืื ื ืงืืืจื ื ืืจืืข 1.18:
export REQUIRED_VERSION=1.18
ืืืกืฃ ืืช ืืืืืจืื ืืืจืืฉืื:
dnf -y install 'dnf-command(copr)' dnf -y copr enable rhcontainerbot/container-selinux curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_8/devel:kubic:libcontainers:stable.repo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo
- ืขืืฉืื ืื ืื ื ืืืืืื ืืืชืงืื CRI-O:
dnf -y install cri-o
ืฉืืื ืื ืื ืืืื ืก ืืจืืฉืื ืฉืื ื ื ืชืงืืื ืื ืืืืื ืชืืืื ืืืชืงื ื: ืขืืืื ืืขืจืื ืืช ืืชืฆืืจื CRI-O ืืคื ื ืชืืืืช ืืฉืืจืืช, ืืืืืื ืฉืืจืืื ื-conmon ืื ืืจืฉ ืืฉ ืืืงืื ืฉืื ื ืืื ืฉืฆืืื:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
ืขืืฉืื ืืชื ืืืื ืืืคืขืื ืืืืคืขืื ืืช ืืืืื CRI-O:
systemctl enable --now crio
ืืชื ืืืื ืืืืืง ืืช ืกืืืืก ืืืืื:
systemctl status crio
- ืืืื ื ืขืืื ืืช ืืขืจืืช ืืืคืขืื:
- ืืชืงื ื ืืืคืขืื ืงืืืจื ื.
- ืืืื ื ืืกืืฃ ืืช ืืืืืจ ืื ืืจืฉ:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
ืขืืฉืื ืื ืื ื ืืืืืื ืืืชืงืื ืงืืืจื ื (ืืจืกื 1.18, ืืคื ืฉืืืืืจ ืืขืื):
dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes
- ืื ืืืื ืก ืืืฉืื ืืฉื ื: ืืืืืื ืฉืื ื ืื ืืฉืชืืฉืื ืืืืื ืกึทืึธืจ, ืืื ืื ืื ื ืืฉืชืืฉืื ืืืืื CRI-O, ืืคื ื ืืืฉืงื ืืืืชืืื ืงืืืจื ื ืขืืื ืืืฆืข ืืช ืืืืืจืืช ืืืชืืืืืช ืืงืืืฅ ืืชืฆืืจื /var/lib/kubelet/config.yaml, ืืืืจ ืฉืืฆืจืช ืชืืืื ืืช ืืกืคืจืืื ืืจืฆืืื:
mkdir /var/lib/kubelet cat <<EOF > /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd EOF
- ืื ืงืืื ืืืฉืืื ืืฉืืืฉืืช ืฉืื ื ื ืชืงืืื ืื ืืืืื ืืืชืงื ื: ืืืจืืช ืืขืืืื ืฉืฆืืื ื ืืช ืืืจืืืืจ ืืฉืืืืฉ cgroup, ืืืชืฆืืจื ืฉืื ืืจื ืืืืขืื ืื ืฉืืืขืืจื ืงืืืื ืืืืฉื (ืืคื ืฉืฆืืื ืืืคืืจืฉ ืืชืืขืื), ืขืืื ื ืืืืกืืฃ ืืจืืืื ืืื ืืงืืืฅ, ืืืจืช ืืืฉืืื ืฉืื ื ืื ืืืชืื:
cat /dev/null > /etc/sysconfig/kubelet cat <<EOF > /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' EOF
- ืขืืฉืื ืื ืื ื ืืืืืื ืืืคืขืื ืืช ืืืืื ืงืืืื:
sudo systemctl enable --now kubelet
ืืืชืืื ืืืฉืืช ืืืืก ืฉืืืื ืื ืขืืื ืฆืืชืื ืชืื ืืงืืช, ืืชื ืืืื ืืืฉืชืืฉ
ืขื ืืชืกืจืื ืืื .
- ืืืื ื ืืกืืฃ ืืช ืืืืืจ ืื ืืจืฉ:
- ืืืืข ืืืื ืืืชืื ืืช ืืืฉืืื ืฉืื ื.
- ืืื ืืืชืื ืืช ืืืฉืืื, ืืคืขื ืืช ืืคืงืืื:
kubeadm init --pod-network-cidr=10.244.0.0/16
ืืงืคื ืืจืฉืื ืืช ืืคืงืืื ืืืฆืืจืคืืช ืืืฉืืื "kubeadm join ...", ืื ืืชื ืืชืืงืฉ ืืืฉืชืืฉ ืืกืืฃ ืืคืื, ืื ืืคืืืช ืืืกืืืื ืื ืฉืฆืืื ื.
- ืืืื ื ืชืงืื ืืช ืืคืืืืื (CNI) ืืจืฉืช Pod. ืื ื ืืืืืฅ ืืืฉืชืืฉ ืงืืืืงื. ืืืื ืืืชืจ ืคืืคืืืจื ืคืึธื ึถื ืืฉ ืืขืืืช ืชืืืืืช ืขื nftablesืืื ืงืืืืงื - ืืืฉืื ื-CNI ืืืืื ืฉืืืืืฅ ืื ืืืง ืืืืืื ืขื ืืื ืืคืจืืืงื ืงืืืจื ื:
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
- ืืื ืืืืจ ืฆืืืช ืขืืื ืืืฉืืื ืฉืื ื, ืขืืื ืืืืืืจ ืืืชื ืืคื ืืืจืืืช 1 ื-2, ืื ืืืฉืชืืฉ
ืชึทืกืจึดืื , ืืื ืืคืขื ืืช ืืคืงืืื ืืืคืื "kubeadm init..." ืฉืจืฉืื ื ืืฉืื ืืงืืื:kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN --discovery-token-ca-cert-hash $TOKEN_HASH
- ืืืื ื ืืืืง ืฉืืืฉืืื ืฉืื ื ืืืืชืื ืืืชืืื ืืขืืื:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
ืืึผืึธื! ืืชื ืืืจ ืืืื ืืืจื ืืืขื ืื ืืืฉืืื ื-K8s ืฉืื.
- ืืื ืืืชืื ืืช ืืืฉืืื, ืืคืขื ืืช ืืคืงืืื:
ืื ืืืื ืื ื ืงืืืื
ืื ื ืืงืืื ืฉืืืืจืืืช ืืืขืื ืขืืจื ืืืกืื ืื ืืื ืืขืฆืืื.
ืืชืืฆืื ืฉื ืชืืืืืื ืืืชืจืืฉืื ืืชืขืฉืืื ืชืืืื ืืขืชืื ืงืจืืืืช ืืืืคื ืฉืื ืื ืืชืงืืืื ืขื ืืื ืจืื ืืฉืชืืฉื ืืงืฆื ืืืคืชืื ืชืืื ืืช ืืืจืืช ืื ืืฉื ืืืงืืืื. ืขืืืื ืื ืืืืจื ืืจืืจ ืืื ืืืืืื ืืืืืืช OCI ืืขืื ืืื ืฉื ืื, ืืื ืื ืื ื ื ืฆืคื ืืื ืื. ืืชื ืืืื ืืฉืชืฃ ืืช ืืขืชื ืืืจ ืขืืฉืื ืืชืืืืืช.
ืืืฉื ืืขืงืื!
ืืืืจ ืื ืืืคืืข ืืืืืช ืืืงืืจืืช ืืืืื:
- ืกืขืืฃ ืขื ืืื ื ืจืืฆื ืฉื ืืืื
ืชืืขืื Kubernetes ืขืืื ืคืจืืืงื CRI-O ืืืื ืืจื ื- ืืืืจืื ืืืืื ืฉื Red Hat:
ืึถื ,ืื ืืจืืื ืืืจืื
ืืงืืจ: www.habr.com