在下文中,我将讨论有关在研究CentOS 8发行版时遇到的容器技术堆栈的变化以及CRI-O是什么以及如何使用它快速为Kubernetes设置可执行环境的内容。
为什么标准CentOS 8发行版中缺少Docker
在安装了RHEL 8或CentOS 8的最新主要版本之后,您一定会注意到:这些发行版和官方存储库缺少Docker应用程序,该程序从意识形态和功能上替代了Podman,Buildah软件包(默认发行版中存在)和CRI-O。这是由于实际实施了Red Hat作为开放容器计划(OCI)的一部分而开发的标准。
作为Linux基础的一部分的OCI的目标是为容器格式和运行时创建开放的行业标准,以解决多种挑战。首先,它们与Linux的哲学并不矛盾(例如,在每个部分中,每个程序都应执行一个动作,而Docker是一种多合一的收集器)。其次,我们可以消除Docker软件中所有现有的缺陷。第三,它们将完全符合用于部署,管理和服务容器化应用程序(例如Red Hat OpenShift)的领先商业平台的业务需求。Docker的
缺点本文已经详细描述了新软件的优势,并详细描述了如何在OCI项目中提供的整个软件堆栈及其体系结构功能在Red Hat本身的官方文档和文章中找到(Red Hat博客中的一篇好文章)。以及在第三方审核中。
重要的是要注意提议的堆栈的组件具有哪些功能:
- Podman-通过runC流程与容器和图像存储直接交互;
- Buildah-构建图像并将其加载到注册表中;
- CRI-O是容器编排系统(例如Kubernetes)的可执行框架。
我认为,为了了解堆栈组件之间交互的一般方案,建议在此处提供带有runC和使用CRI-O的低级库的Kubernetes的通信图:
CRI-O和Kubernetes遵循相同的发布和支持周期(兼容性矩阵非常简单:主要版本Kubernetes和CRI-O是相同的),并且考虑到开发人员对这个堆栈的工作进行了全面和全面的测试,这使我们有权期望在任何用例下都能实现最大的工作稳定性(在此,CRI-O的相对轻度也比较有利)从Docker(由于功能的故意限制)。在CentOS 8上使用CRI-O以“正确的方式”
安装Kubernetes时(当然是根据OCI),我们遇到了一些小难题,但这些难题已被成功克服。我很高兴与您分享安装和配置说明,这些说明最多需要10分钟。
如何使用CRI-O在CentOS 8上部署Kubernetes
先决条件:至少一个主机(2核,4 GB RAM,至少15 GB驱动器)已安装CentOS 8(建议使用“服务器”安装配置文件),以及在本地DNS中的条目(作为最后的选择,您可以做)在/ etc / hosts中)。并且不要忘记禁用swap。
请注意,我们以root用户身份在主机上执行所有操作。
- 第一步,我们将配置操作系统,安装并配置CRI-O的初步依赖关系。
- 让我们更新操作系统:
dnf -y update
- SELinux. , . , , , :
firewall-cmd --set-default-zone trusted firewall-cmd --reload
:
systemctl disable --now firewalld
SELinux «permissive»:
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
- 让我们更新操作系统:
- 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
- : Docker, 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
- , : , cgroup, kubelet ( ), , :
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
- :
- .
- :
kubeadm init --pod-network-cidr=10.244.0.0/16
«kubeadm join ...», , , , .
- (CNI) Pod network. Calico. , Flannel nftables, Calico — CNI, Kubernetes:
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
- worker 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项目页面
- 红帽博客文章:这个,这个和更多