Cách cài đặt CRI-O Container Runtime trên Ubuntu 22.04

theanh

Administrator
Nhân viên
CRI-O là một giải pháp thay thế cho Docker cho Kubernetes về thời gian chạy container nhẹ. Đây là một triển khai của Kubernetes CRI (Giao diện thời gian chạy container) và tuân thủ thời gian chạy OCI (sáng kiến Open Container). CRI-O cho phép Kubernetes thực thi container trực tiếp mà không cần bất kỳ công cụ hoặc điều chỉnh bổ sung nào cho mã.

CRI-O hỗ trợ nhiều định dạng hình ảnh, bao gồm định dạng hình ảnh Docker. Ngoài ra còn cung cấp chức năng quản lý hình ảnh container như quản lý lớp hình ảnh, hệ thống tệp lớp phủ, quản lý vòng đời quy trình container, giám sát và ghi nhật ký cho container và cũng cung cấp khả năng cô lập tài nguyên.

Hướng dẫn này sẽ hướng dẫn bạn cài đặt CRI-O Container Runtime trên máy chủ Ubuntu 22.04. Điều này cũng bao gồm cách thiết lập plugin CNI với CRI-O và cách sử dụng cơ bản "cri-tools" để quản lý Pod và container.

Điều kiện tiên quyết​

Trước khi bắt đầu, bạn phải có các yêu cầu sau:
  • Máy chủ Ubuntu 22.04 - Hướng dẫn này sử dụng Máy chủ Ubuntu có tên máy chủ "server-ubuntu" và địa chỉ IP của máy chủ "192.168.5.10".
  • Người dùng không phải root có quyền root/quản trị viên.

Cài đặt CRI-O Container Runtime​

CRI-O có thể được cài đặt theo nhiều cách khác nhau, cài đặt thông qua lệnh APT hoặc xây dựng và cài đặt CRI-O từ nguồn. trong ví dụ này, bạn sẽ cài đặt CRI-O Container Runtime thông qua kho lưu trữ của bên thứ ba.

Trước khi bắt đầu cài đặt, hãy chạy lệnh sau để thiết lập biến môi trường "$OS" và "$CRIO_VERSION". Trong ví dụ này, chúng tôi sẽ cài đặt CRI-O v1.24.0 cho Ubuntu 22.04.
Mã:
export OS=xUbuntu_22.04
export CRIO_VERSION=1.24
Bây giờ hãy chạy lệnh sau để thêm kho lưu trữ CRI-O cho máy chủ Ubuntu 22.04.
Mã:
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list
Thêm khóa GPG cho kho lưu trữ CRI-O bằng lệnh bên dưới.
Mã:
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -


Bây giờ hãy cập nhật kho lưu trữ Ubuntu của bạn và làm mới chỉ mục gói. Bạn sẽ thấy kho lưu trữ CRI-O được thêm vào danh sách chỉ mục gói của bạn.
Mã:
sudo apt update


Sau đó, hãy kiểm tra phiên bản gói CRI-O bằng lệnh bên dưới. Như bạn thấy, bạn sẽ cài đặt phiên bản mới nhất của gói CRI-O v1.24.
Mã:
sudo apt info cri-o


Bây giờ hãy cài đặt thời gian chạy container CRI-O bằng lệnh apt bên dưới. Nhập Y để xác nhận cài đặt và nhấn ENTER để tiếp tục, quá trình cài đặt sẽ bắt đầu.
Mã:
sudo apt install cri-o cri-o-runc


Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ CRI-O và bật dịch vụ này bằng lệnh "systemctl" bên dưới.
Mã:
sudo systemctl start crio
sudo systemctl enable crio
Cuối cùng, hãy kiểm tra và xác minh dịch vụ CRI-O bằng lệnh bên dưới. Bạn sẽ thấy dịch vụ CRI-O được bật và sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ CRI-O đang chạy.
Mã:
sudo systemctl status crio

Cài đặt Plugin CNI (Giao diện mạng container)​

CNI (Giao diện mạng container) là bắt buộc đối với thời gian chạy container CRI-O. Plugin CNI cho phép bạn thiết lập mạng trên container và Pod. Bạn sẽ cài đặt plugin CNI từ kho lưu trữ ubuntu chính thức và thiết lập nó với thời gian chạy container CRI-O.

Gói "containernetworking-plugins" chủ yếu có sẵn trên bản phân phối Linux. Để cài đặt, hãy chạy lệnh apt bên dưới và quá trình cài đặt sẽ bắt đầu.
Mã:
sudo apt install containernetworking-plugins


Sau khi cài đặt hoàn tất, hãy chỉnh sửa tệp cấu hình CRI-O "/etc/crio/crio.conf" bằng lệnh sau.
Mã:
sudo nano /etc/crio/crio.conf
Trong phần "[crio.network]", bỏ chú thích tùy chọn "network_dir" và "plugin_dirs". Ngoài ra, hãy đảm bảo thêm thư mục plugin CNI "/usr/lib/cni/" vào tùy chọn "plugin_dirs".
Mã:
# Các thiết lập chứa bảng crio.network liên quan đến việc quản lý
# plugin CNI.
[crio.network]

# Tên mạng CNI mặc định sẽ được chọn. Nếu không được đặt hoặc "", thì
# CRI-O sẽ chọn mục đầu tiên được tìm thấy trong network_dir.
# cni_default_network = ""

# Đường dẫn đến thư mục chứa các tệp cấu hình CNI.
network_dir = "/etc/cni/net.d/"

# Đường dẫn đến thư mục chứa các tệp nhị phân của plugin CNI.
plugin_dirs = [
 "/opt/cni/bin/",
 "/usr/lib/cni/",
]
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Tiếp theo, xóa cấu hình CNI cầu nối mặc định "/etc/cni/net.d/100-crio-bridge.conf". Sau đó, tải xuống cấu hình CNI cầu nối mới vào "/etc/cni/net.d/11-crio-ipv4-bridge.conf".

Cấu hình CNI cầu nối mới sẽ chỉ bật IPv4 cho Pod và vùng chứa.
Mã:
rm -f /etc/cni/net.d/100-crio-bridge.conf
sudo curl -fsSLo /etc/cni/net.d/11-crio-ipv4-bridge.conf https://raw.githubusercontent.com/cri-o/cri-o/main/contrib/cni/11-crio-ipv4-bridge.conf


Bây giờ hãy khởi động lại dịch vụ CRI-O để áp dụng các thay đổi mới cho cài đặt plugin CNI.
Mã:
sudo systemctl restart crio
Cuối cùng, hãy kiểm tra và xác minh lại dịch vụ CRI-O bằng lệnh bên dưới. Bạn sẽ thấy dịch vụ CRI-O đang chạy với cấu hình cầu nối CNI mới.
Mã:
sudo systemctl status crio

Cài đặt gói CRI-Tools​

Bạn đã hoàn tất cài đặt thời gian chạy container CRI-O và bây giờ nó đang chạy với plugin CNI chính xác. Bây giờ bạn sẽ cài đặt gói "cri-tools" bao gồm tiện ích dòng lệnh "crictl" có thể được sử dụng để tương tác với thời gian chạy container CRI-O.

"cri-tools" có thể được sử dụng với nhiều thời gian chạy container như containerd, dockershim, CRI-O và cri-dockerd.

Chạy lệnh apt bên dưới để cài đặt gói "cri-tools". Quá trình cài đặt sẽ tự động bắt đầu.
Mã:
sudo apt install cri-tools


Sau khi quá trình cài đặt hoàn tất, hãy chạy lệnh "crictl" bên dưới để kiểm tra phiên bản thời gian chạy hiện tại. Bạn sẽ thấy thời gian chạy container hiện tại mà bạn đang sử dụng là CRI-O v1.24.
Mã:
phiên bản crictl
Tiếp theo, hãy chạy lệnh "crictl" bên dưới để kiểm tra trạng thái của Thời gian chạy Container hiện tại và Plugin Mạng CNI. Bạn sẽ thấy Thời gian chạy Container CRI-O là "RuntimeReady" và Plugin CNI là "NetworkReady".
Mã:
thông tin crictl


Lệnh crictl cung cấp chức năng tự động hoàn thành cho shell của bạn, có thể được tạo thủ công. Chạy lệnh crictl sau đây để tạo lệnh hoàn thành cho shell Bash tới "/etc/bash_completion.d/crictl". Sau đó, tải lại phiên Bash hiện tại của bạn bằng cách lấy nguồn tệp cấu hình ~/.bashrc.

crictl completion > /etc/bash_completion.d/crictl
source ~/.bashrc

Bây giờ hãy chạy lệnh "crictl" và nhấn TAB để xem tất cả các lệnh hoàn thành có sẵn.
Mã:
crictl TAB

Tạo Pod và Container bằng crictl​

Bây giờ cri-tools đã được cài đặt trên hệ thống của bạn, đã đến lúc tạo hộp cát và container Pod bằng lệnh "crictl". Trong ví dụ này, chúng ta sẽ tạo một Pod cho vùng chứa Nginx.

Tạo một thư mục mới "~/demo" bằng lệnh bên dưới.
Mã:
mkdir ~/demo/
Bây giờ hãy chạy lệnh bên dưới để tạo một tệp cấu hình JSON mới và xác định hộp cát Pod cho vùng chứa.
Mã:
cat
 
Back
Bên trên