Tôi đang thử nghiệm các lớp thời gian chạy của K8 và đã kích hoạt thành công một số nhóm bằng cách sử dụng containerd & gVisor.
Để làm điều này, tôi đã thay đổi /etc/containerd/config.toml
bên dưới, sau đó khởi động lại dịch vụ
bị vô hiệu hóa = ["khởi động lại"]
[plugins.linux]
shim_debug = đúng
[plugins.cri.containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"
Điều này loại bỏ default_runtime_name = "runc"
config từ cấu hình mặc định có trong /etc/containerd/config.toml
(ban đầu được tạo bằng cách sử dụng cấu hình container mặc định
trước khi cụm được xây dựng bằng kubeadm)
Sau đó, tôi đã tạo một lớp thời gian chạy để sử dụng runc và sử dụng lớp này trong bảng kê khai nhóm của mình với runtimeClassName: gvisor
apiVersion: node.k8s.io/v1beta1
loại: RuntimeClass
metadata:
tên: gvisor
xử lý: runc
và sau đó kích hoạt một nhóm để sử dụng lớp thời gian chạy mới
phiên bản api: v1
loại: Vỏ
metadata:
tên: gvisor-pod
thông số kỹ thuật:
runtimeClassName: gvisor
hộp đựng:
- tên: nginx
hình ảnh: nginx
Nhưng tất nhiên nếu sau đó tôi làm một bình thường kubectl chạy pod1 --image nginx
(tức là không quy định cụ thể runtimeClassName: gvisor
trong một bảng kê khai để làm cho nó sử dụng lớp thời gian chạy mới của tôi), nó vẫn khởi động tốt bằng cách sử dụng runc shim.
một mỗi các tài liệu
Nếu không chỉ định runtimeClassName, RuntimeHandler mặc định sẽ được sử dụng,
tương đương với hành vi khi tính năng RuntimeClass bị tắt.
Câu hỏi của tôi là nếu không có default_runtime_name = "runc"
trong tệp cấu hình container, làm cách nào để kubelet/containerd vẫn biết sử dụng runc khi lớp/trình xử lý thời gian chạy tùy chỉnh không được chỉ định trong tệp kê khai nhóm? tức là đây là đâu Trình xử lý thời gian chạy mặc định cấu hình?