7. namespaces
- Mount - isolate filesystem mount points
- UTS - isolate hostname and domainname
- IPC - isolate interprocess communication (IPC) resources
- PID - isolate the PID number space
- Network - isolate network interfaces
- User - isolate UID/GID number spaces
- Cgroup - isolate cgroup root directory
8. GO has what we need?
- Good asynchronous primitives (wait
for I/O, wait for processes, … )
- low-level interfaces (manage
processes, syscalls, … )
- extensive standard library and data
types
- strong cross compilation support
- strong duck typing
Xin chào các bạn mình Việt Đàm đến từ TopDev
ngày hôm nay mình được vinh dự tham gia VWS 2020
chủ đề lần này mình sẽ chia sẽ đến các bạn về công nghệ rất là hot trong những năm vừa qua đó là Công Nghệ Container
Thì khi nhắc đến Container thì chắc các bạn cũng nghĩ đến những công cụ rất hot đó
không gian - tiến trình ABCD - duy nhất
Docker
7 không gian cô lập
tại sao dùng golang => demo
pivot root
Layer
CGROUP
đoạn mã xấu -> tê liệt máy
phát triển Google tích hợp Kernel năm 2008 -> phân chia, giới hạn , CPU, Mem , băng thông
cgroups cấu trúc phân cấp -> cgroups con (child) sẽ thừa hưởng các thuộc tính từ cgroups cha (parent).
--------------------
- tài nguyên
- 10 cgroup tương ứng 10 màu
các khu vực màu không nằm đè lên nhau -> riêng biệt
1 group phân chia nhiều khu vực
cấu hình: on fly, persisten basis
máy ảo : cần ảo hoá phần cứng
Selinux - giới hạn khả năng truy cập vào tài nguyên hệ thống của risk applications
AppArmor - tương tự SELinux
Seccomp - dùng để lọc lệnh gọi vào system (syscall) từ ứng dụng
Linux Capabilities - là những đơn vị quyền (previlege). Đa số các bạn nghĩ rằng root là có tất cả quyền lực. Không hẳn như vậy, user root sở hữu tất cả các capability mới là có tất cả quyền lực
đa phần lập trình viên không can thiệp nhiều
thường dùng những tools, thư viện high-level để giao tiếp
trực tiếp setup namespace và cgroups và chạy những lệnh bên trong namespace và cgroup
runc được dùng rộng rãi
runc tích hợp chuẩn OCI runtime
lớp ở trên low-level
Trong khi low-level thực hiện chạy container thì high-level vẫn chuyển,
giải nén, di chuyển cho low-level
thông thường, high-level chạy dưới dạng chế độ ngầm như 1 service và gRPC/Web APIs để có thể giao tiếp tool, thư viện
Containerd cũng giống runc được tách ra từ Docker
chuẩn mang tính chất trừu tượng
OCI Distribustion Spec chuẩn hoá những giao thức API liên quan đến việc phân phối container image
Registry, Client, Push, Pull, Config, Tag
OCI Runtime Spec chuẩn hoá những cái cấu hình, môi trường thực thi và vòng đời của 1 container - đa nền tảng, consistent
OCI Image chuẩn để đóng gói ứng dụng - manifest, an image index, tập hợp filesystem layers, configuration.
crio cho phép chạy trực tiếp với K8s
giảm chi phí bảo trì
tương thích với OCI - runtime
container không phải là sandbox thực thụ
trong khi đó container chạy ứng dụng ko tin cậy và chứa mã độc. Sử dụng một kernel duy nhất
image status không chênh lệnh thời gian nhiều
không đề cập pull image