αα½ααααΈ! αααα»αααααα Sergey αααα»αααΆ DevOps αα Surf α ααΆααααααΆα DevOps αα Surf ααΆαααααααααα·αααααΉααααααααΎαα’αααααααααααΆαα’αααα―αααα αα·ααα½ααααα αΌαααααΎαααΆαααΆαααΆαααα»ααααααα ααα»αααααααααΆααααααΆαααααΆα αα·αα’αα»αααααα αα αααα·ααααΆαα αα α»αααααααααΆααααααααΆαααα αααα»αα αααααΆαα ααΆααααααααααααΆαααααα½α αα·αα αααααΆαα ααΆααααααααααααα’αα·αα·αααααααα
ααΆααααααααααααα»αααΉααα·ααΆαααααα·α α’αααΈααΆαααααΆααααααΌααα αααα»αααααα αα αααα·ααααΆαααααΆαααα»αααΊααααααααΎααα½αααααααα ααααα·ααααΆααΆαα ααα αΆα CentOS 8 αα·αα’αααΈα’αααΈαααααΆααΊααΆ CRI-O αα·ααααααααα αααα·ααααΆααααα’αΆα ααααα·ααααα·ααΆααααΆαααΆαααα αα Kubernetes.
α ααα»α’αααΈααΆαααΆ Docker αα·αααααΌαααΆαααΆαααααα αΌααααα»α CentOS 8?
αααααΆααααΈααα‘αΎαααααααααΆαααα α»αααααααααα’αα RHEL α§ α¬ CentOS 8 αααα·αα’αΆα αα½αααααααααΆααααΆαααα ααΆαα ααα αΆα αα·αααααΆααααααΌαααΆαααΆααααααα·αααΆααααααα·ααΈααα Dockersααααααα½ααααα αααααααααααα·ααααΆ αα·ααα»αααΆα ααΌααα, Buildah (ααΆαααααααΆααα αααα»αααΆαα ααα αΆαααΆαααααΆαααΎα) αα·α CRI-O. αααααΊαααααΆαααααΆαα’αα»ααααααΆααααααααααααααααΆααααααααΌαααΆααααααΎαα‘αΎαααα Red Hat αααααΆααααααα½ααααααααα Open Container Initiative (OCI)α
ααααα αααα OCI αααααΆααααααα½αααααΌααα·αα·ααΈαα»α ααΊααΎααααΈαααααΎααααααααΆαα§ααααΆα ααααααΎαα αα αααααΆαααααααααα»αααΊααα αα·αααααααααααΎαααΆαααααααααααΆααααα αΆααΆα αααΎααααα»αααααααα½αα ααΈαα½α αα½ααααα·ααααα»αααΉαααααααα·ααααΆααααΈαα»α αα (α§ααΆα ααα αα αααα»ααααααααααααααα·ααΈααΈαα½αααα½αα’αα»αααααααααααΆααα½α αα·α Dockers ααΊβααΆβααααααβααβααΆαβαα½αβαααα αΌαβααααΆβααΆααβα’ααβαααα»αβαα½α)α ααΈααΈα αα½αααα’αΆα αα»αααααΆααααΆααααΆαααααααΆααααααΆαααααΆαααα αααα»ααααααα·ααΈ Dockers. ααΈααΈ αα½αααααΉαααΆαααΆαααααααΆαααΆαααααααααΆαα½αααΉααααααΌαααΆαα’αΆααΈααααααααααα·ααΆααΆαα·αααααααααΆααα»ααααααααΆααααΆαααΆαααααααΆα ααααααααα αα·ααααααΎαααααα·ααΈαααααΆααα»αααΊααα (α§ααΆα ααα Red Hat OpenShift) α
ααα α»α Dockers α αΎαα’ααααααααααααααααααα·ααΈααααΈααααΌαααΆααα·αααααΆαα½α
α αΎααα
αααα»ααααα’α·ααα½αα
ααα½ααα
αααα»α
ααΆααΆααΆαααααΆαααααα»αααΆαααααααααΆααααΆαα»αααΆαα’αααΈααααααΆαααΆαα»ααααααααααΆαααααΎααΆα:
- ααΌααα - α’αααααααααααααααΆααααΆαα½ααα»αααΊααα αα·αααΆααααα»αααΌαααΆαααΆααααααααΎαααΆα runC;
- Buildah - ααΆααα½αααααα»αααααΆ αα·αααΆααααα ααααΌαααΆααα αααα»ααααααΈααααα
- CRI-O - ααα·ααΆααΆααααα’αΆα ααααα·ααααα·ααΆααααααΆαααααααααααααα ααα»αααΊααα (α§ααΆα ααα Kubernetes) α
αααα»ααα·αααΆ ααΎααααΈαααααΈαααααααΆαααααΌαα ααα’αααααααααααΆαααΆαα»ααααααααα ααΆααααΌαααΆαααααΆαα±αααααααααααΆααααΆααααααΆαααα ααΈααα Kubernetes c αααC αα·ααααααΆαααααααα·αααΆααααααααΎ CRI-O:
CRI-O ΠΈ Kubernetes αααααΆααααααΆααααΌαααααααααΆαα
ααααααΆα αα·αααΆαααΆααααααΌα
ααααΆ (αααΆααααΈαααΆαααααααΆααΊααΆααααααΆααα ααααααααΆααα Kubernetes ΠΈ CRI-O ααααααααΆ) α αΎααααααααα·α
αΆαααΆααΎααΆααααααααΎααΆαααααΎααααααααααα αα·αααΌααααΌααΆαααααααα·ααααα·ααΆααααααααααααα’αααα’αα·αααααα αααααα±ααααΎαααΌααα·αααα·αααα»αααΆαααααΉαααΆααΉαααΆααααααααΆαα’αα·ααααΆαααα’αΆα
αααααα
ααΆααααα»αααααα·ααααα·ααΆααααααααααΆααΈαααΌααααΆαααααΎααααΆααααΆαα½α (αααααΊαααααΆααααααααΆααααΆααααααααααα
ααΈααααααααα CRI-O ααααααααβααΆαα½α Dockers αααααΆαααααΆααααααααααααααααα»αααΆα) α
αα αααααα‘αΎα Kubernetes αα·ααΈ "ααααΉαααααΌα" (ααααα ααΆα OCI ααΆααΆααα·αααΆαα) αααααααΎ CRI-O αα ααΎ CentOS 8 ααΎαααΆααα½ααααααααΆαααααΆααα·α αα½α αα½αα ααα½α ααααααααΆαααΆαααΆααααα ααΎαααΆααααααααααααααααα αααα»αααΉαααΈαααΆααααα»αααΆαα αααααααααΆαα½αα’αααααΌαααΆαααααΆαα’αααΈααΆαααα‘αΎα αα·αααΆαααααααα ααΆαααααααα αααααα»αααΉαα αααΆαααααααα αα 10 ααΆααΈα
ααααααΆααα±αα Kubernetes αα ααΎ CentOS 8 αααααααΎααααααααα CRI-O
αααααΌαααΆαααΆαα»αα ααααααΆααααααααΆαααΈααααΆαα αα
ααΆαααα½α (ααααΌα 2, RAM 4 GB, αααΆαα αα
ααΆαα 15 GB storage) ααΆαα½αααΉαααΆαααα‘αΎα CentOS 8 (ααααααααα‘αΎα "αααΆαααΈααα" ααααΌαααΆαααααΆα) ααααΌα
ααΆααΆαα»αααααΆααααΆαα
αααα»α DNS ααΌαααααΆα (ααΆαααααααΆαα
α»αααααα α’αααα’αΆα
ααα½αααΆααααααΆαα»αα
αααα»α /etc/hosts) α α αΎααα»αααααα
ααΎαααααΎααααα·ααααα·ααΆαααΆααα’αααα ααΎαααΆαααΈαααΆα’αααααααΎααααΆαα root ααΌαααααααααα
- αα
αααα»αααα αΆαααααΌα ααΎαααΉαααααααα
ααΆαααααααα OS ααα‘αΎα αα·αααααααα
ααΆααααααααααΆαα’αΆαααααααααααααΆαα CRI-O α
- αααααααΎαα
αα
α»ααααααααΆα OSα
dnf -y update
- αααααΆααα’αααααααΌαααααααα
ααΆαααααααα Firewall αα·α SELinux α αα
ααΈαααα’αααΈααααααααΆαα’αΆαααααααΎααα·ααΆααΆαααααααΆαααΈαα¬αααΆαααΈαααααααΎαααΉαααααΎαααΆαα α’αααα’αΆα
ααα‘αΎααααααΆααααααΎαααΆαααΆαααααΆαααΈ
α―αααΆα α¬ααααα·αααΎα’ααααααα·ααα ααΎαααααΆααααα’αΆα αα»αα α·αααααΆα α¬ααααΎαααααΆααααααΎαααΆααΈααΈααΈ ααααΆααααααΌααααααααααΆαααΎααα ααΆαααα’αΆα αα»αα α·αααααΆα α¬αα·ααααααΆααααααΎααfirewall-cmd --set-default-zone trusted firewall-cmd --reload
ααΎααααΈαα·α Firewall α’αααα’αΆα ααααΎααΆααααααααΆααΆααααααα
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ααΌα
αααααΆααααααΆαααα½α
ααα αΎα ααααΌαααααΆααΉααααααααααααΌαααΆα Kubernetes) α
αΆααααΆααααΈαααααααααααΆαα
α»αααααααααα»αα Kubernetes αα
αα
α»αααααα 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
- αααααααΎαα
αα
α»ααααααααΆα OSα
- ααΆαααα‘αΎααα·αααΆαααααΎα±ααααααα Kubernetes.
- αααααααααααααΆαααααααααΌαααΆαα
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
α₯α‘αΌααααααΎαα’αΆα ααα‘αΎαααΆαα Kubernetes (αααα 1.18 ααΌα αααααΆααααααΆααααΆαααΎ)α
dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes
- nuance ααααΆααααΈααΈαα αααααΆαααΎααα·αααααΎαααα·α Dockersααα»ααααααΎαααααΎαααα·α CRI-Oαα»ααααα
αΆααααααΎα αα·αα
αΆααααααΎα Kubernetes α’αααααααΌαααααΎααΆαααααααααααααα
αααα»αα―αααΆαααααααα
ααΆαααααααα /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
- α
ααα»α
ααααΆααααΈ XNUMX αααααΎααα½ααααααααα‘α»ααααααα‘αΎαα αααααΈααΆααΎαααΆααααα αΆαα’αααααΎαααααΆαααααΎαααααα 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) αααααΆαααααααΆαααα αααα»αααΌαααααΆαα±ααααααΎ ααΆααΈααΌα. αααα ααααΆααααα·ααααΆα Flannel ααΆααααα αΆααΆαααααααΆααΆαα½α nftablesααΆα αα·α ααΆααΈααΌα - ααΆαα’αα»αααα CNI αααα½αααααααααΆαααααΆα αα·αααΆααααααααΆαααααααααααααααα Kubernetes:
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
αα½α ααΆααα αΎα! α’αααα’αΆα αααα αα payloads αα ααΎ cluster K8s ααααα’αααα
- ααΎααααΈα
αΆααααααΎαα
ααααα ααΌαααααΎαααΆαααΆααααααααΆα
α’αααΈααααααα»ααααα αΆαααΎααα ααΆααα»α
αααα»ααααααΉαααΆααΆαααααΆαααΆαααΎααΆααα½αα’αααααααααααααααΆ αα·ααααααααα
ααααααααααααΎαααΆααααααΎαα‘αΎααα
αααα»αα§ααααΆα αααααααααΆααΏααα’αΆαααααααΎααααααααα½αααααααΌαααΆαααα½ααααααααΆαα
αααΎαααα’αααααααΎααααΆααα
α»αααααα αα·αα’ααααααααΎααααααα·ααΈαααααααααα
αααα»αααΈααααΆααα·ααααααααααΌαααααΆα ααΆαα·αααΆααα
αααΆαααα
α‘αΎαααααΆααΎαααα·ααααα½α
ααααΎα OCI ααΉαααΆααα
ααα’αααΈαααα»αααααααααΈαααΈααααΆαααα ααα»ααααααΎαααΉαααΎααααααααΈααΈαααΆαα α’αααα’αΆα
α
ααααααααααα·αααααα’αααα₯α‘αΌαααααα
αααα»αααα·αααααα
α αΆαααΎα!
α’ααααααααααΆαααα α αααααααΆααααααααΆααααααα
- αααααα’αααΈαα»αααΊαααααααΎαααΆα
α―αααΆα Kubernetes ααααα αααααα CRI-O αα ααΎα’ααΈαααΊαα·α- α’αααααααααααα½ααααα αα
αα½αβααα ,ααα αα·αα’αααααααααααααΆα αααΎαα
ααααα: www.habr.com