‫Kubernetes là rất nhiều thứ.
‫Tôi chắc chắn muốn phá vỡ một số cấu trúc liên kết
‫cơ bản và các
‫phần của hệ thống trước khi chúng tôi bắt đầu cài
‫đặt một ứng dụng trên Kubernetes. Đầu tiên là bản thân Kubernetes.
‫Đó thực chất là những gì tôi đang nói đến.
‫Toàn bộ hệ thống.
‫Thiết lập một máy chủ hoặc nhiều máy chủ
‫với tất cả các phần cùng có để chạy các ứng dụng của bạn.
‫Đôi khi chúng tôi viết tắt nó là K8s.
‫Thông thường khi nói về Kubernetes, tôi sẽ chỉ nói Kubernetes,
‫nhưng thường trong văn bản, hoặc thậm chí trong
‫tài liệu, bạn sẽ thấy K8s, và
‫đó về cơ bản là một phiên bản ngắn gọn,
‫viết tắt của Kubernetes. Nếu bạn thực sự nhìn
‫vào nó, số 8 có nghĩa là 8 chữ cái giữa K và S.
‫Đó là lý do tại sao họ đã làm điều đó. K, tám chữ cái, và sau đó S.
‫Đó là tên viết tắt của họ.
‫Đôi khi mọi người có thể gọi nó là Kube.
‫Nhưng, về cơ bản ở đây chúng ta sẽ nói về điều tương
‫tự khi chúng ta nói Kubernetes và K8s.
‫Bây giờ kubectl là công cụ dòng lệnh mà bạn sẽ
‫sử dụng để nói chuyện với Kubernetes API.
‫Cách chính mà chúng tôi nói chuyện với Kubernetes là thông qua API của nó.
‫Có rất nhiều công cụ có thể làm điều đó.
‫Trên thực tế, có rất nhiều công cụ mà họ có thể nói chuyện với API.
‫Cái thực sự xuất phát chính thức từ dự án và chúng tôi
‫sẽ sử dụng hầu hết thời gian là kubectl.
‫Bây giờ bạn có thể thấy điều này được đề cập đến trong
‫các video hoặc bài nói chuyện khác, như
‫âu yếm khối lập phương, hoặc âu yếm kube, hoặc kiểm soát kube, tất
‫cả các loại khác hoặc thậm chí có thể là kubectl, nhưng
‫tất cả đều giống nhau.
‫Về cơ bản, họ là những người khác nhau
‫nói theo cách khác. Trên thực tế, chỉ khoảng
‫một năm trước, họ đã quyết định chính thức gọi công cụ
‫này là kubectl trong tài liệu.
‫Nhưng, thực sự không có cách nào sai để nói điều đó.
‫Cũng giống như với Swarm, nơi chúng tôi gọi các nút là
‫các máy chủ bên trong cụm đó, Kubernetes cũng đề cập
‫đến mọi thứ như các nút.
‫Vì vậy, thuật ngữ đó ít nhất là giống nhau giữa hai thuật ngữ.
‫Kubelet là vùng chứa sẽ chạy một
‫tác nhân nhỏ, nhỏ trên mỗi nút để cho
‫phép nút đó nói chuyện lại với chủ Kubernetes.
‫Hãy nhớ rằng, vì Docker đã tích hợp sẵn Swarm nên nó không
‫thực sự cần tác nhân riêng biệt.
‫Tất cả điều đó đã được tích hợp vào Docker Engine.
‫Bây giờ với Kubernetes đang chạy trên đó, nó cần API công
‫cụ riêng của nó để nói chuyện với Docker cục bộ hoặc thời gian chạy
‫cục bộ, tùy theo điều kiện nào có thể.
‫Sau đó, nó nói chuyện ngược lại với máy bay
‫điều khiển, hoặc máy chủ, phụ trách điều
‫hành cụm Kubernetes.
‫Mặt phẳng điều khiển, đôi khi được gọi là cái chính,
‫là phần phụ trách của cụm.
‫Nếu bạn đã quen thuộc với Swarm.
‫Trong Swarm, chúng tôi có người quản lý.
‫Có thể có một hoặc nhiều người quản lý.
‫Chúng tôi muốn có một số lượng người quản lý lẻ.
‫Sau đó, có những công nhân đang làm tất cả công việc.
‫Nếu bạn nhớ từ Swarm, những người quản lý cũng có thể là
‫công nhân vì họ cũng có thể tự
‫vận hành các thùng chứa. Vì vậy, về mặt kỹ thuật, bạn
‫có thể chỉ có một máy chủ duy nhất. Bạn có thể có nhiều máy chủ
‫và phân chia hai vai trò. Rất nhiều điều đó rất giống ở Kubernetes.
‫Chúng tôi chỉ có những cái tên hơi khác nhau cho nó.
‫Mặt phẳng điều khiển, cũng là thứ
‫mà chúng tôi đã chạy trong Swarm, là phần mà
‫các máy chủ đang chạy tất cả những thứ phụ
‫trách về cơ bản.
‫Nó có nhiều hơn một thùng chứa. Đó là một nhóm các thùng chứa.
‫Họ điều hành những việc riêng lẻ.
‫Họ lấy nguyên tắc của Linux là làm một việc và làm
‫tốt điều đó, và họ lấy điều đó và chia
‫nhỏ mọi thứ. Vì vậy, về cơ bản mỗi
‫một trong những bộ phận này làm một việc và làm tốt điều đó, và nó đơn
‫giản hóa thiết kế về mặt phát triển.
‫Nhưng khi bạn phải xây dựng cái này và chạy nó, nó
‫sẽ khiến mọi thứ khó thiết lập hơn một
‫chút vì có nhiều thứ hơn. Mặt phẳng điều khiển này bao
‫gồm các vùng chứa sẽ chạy API, bộ lập lịch, bạn thực sự cần
‫một chương trình phụ trợ cơ sở dữ liệu sẽ có
‫tên là etcd.
‫Sau đó, bạn có người quản lý bộ điều khiển.
‫Có thể bạn sẽ cần một thứ gọi là coreDNS để xử
‫lý DNS của mình, v.v.
‫Chúng tôi có rất nhiều bộ phận ở đây, nhưng hãy
‫đặt nó trên sơ đồ và xem điều này có giúp ích gì không.
‫Tôi sẽ so sánh nó với Swarm vì bạn đã học được điều
‫đó trong khóa học này.
‫Nếu bạn chỉ có một máy, giống như chúng
‫ta sẽ làm trong một phút để học, tất cả những thứ mà tôi
‫đã đề cập trước đây sẽ nằm trong cùng một máy chủ.
‫Sẽ có một loạt các thùng chứa đang chạy. Đó là những gì
‫bạn sẽ thấy trên những thứ như minikube và Docker Desktop khi bạn
‫đang chạy Kubernetes một nút duy nhất.
‫Trong thế giới thực khi bạn truy cập vào máy chủ, bạn sẽ phá
‫vỡ những thứ này. Tôi nghĩ rằng tôi sẽ
‫chỉ cho bạn thực sự nhanh chóng, trên một sơ đồ mạng, nó có thể trông như
‫thế nào và giải thích các phần khác nhau.
‫Đầu tiên, hãy giả sử bạn có một bậc thầy.
‫Trong một thiết lập đa tổng thể, bạn sẽ
‫có ba trong số đó. Cũng giống như với Swarm, bạn cần
‫các số lẻ vì nó sử dụng cùng một giao thức RAFT để giữ sự đồng thuận
‫giống như Swarm đã làm.
‫Trong tài liệu, chúng đều được gọi là master.
‫Tuy nhiên, sẽ hơi khó hiểu khi bạn có nhiều hơn một chủ vì
‫đó là cùng một thiết lập mà bạn chỉ có thể có
‫một cái thực sự làm công việc viết etcd.
‫Chúng còn được gọi là máy bay điều khiển.
‫Bạn sẽ nhận ra thuật ngữ đó từ
‫Swarm, được đề cập cụ thể trong
‫Swarm đến các giao thức qua mạng cho phép các nút
‫chính và các nút nói chuyện an toàn để
‫đưa ra lệnh. Nhưng ở đây, có một chút khác biệt.
‫Mặt phẳng điều khiển đang nói về các nút chính đang
‫đưa ra quyết định.
‫Cũng giống như với Swarm, chúng ta có các nút công nhân.
‫Trong tài liệu, chúng thực sự sẽ chỉ
‫được gọi là các nút. Đôi khi, bạn thấy từ worker được đề cập.
‫Chúng tôi sẽ gọi các nút đó ở đây chỉ để nhất quán.
‫Một lần nữa, giống như trước đây, tất cả những thứ này đều có
‫thể chạy các vùng chứa, nhưng nhìn chung, bạn sẽ giữ
‫các ứng dụng của mình ở các nút và hệ thống quản lý Kubernetes
‫ở chế độ chính.
‫Tất cả những thứ này đang chạy
‫trên Docker hoặc một số thời gian chạy vùng chứa khác như
‫containerd hoặc crio.
‫Bên trong mỗi cái chủ, chúng ta sẽ cần chạy
‫nhiều vùng chứa để giữ quyền
‫kiểm soát hệ thống. Đầu tiên trong số đó là etcd.
‫Etcd là một hệ thống lưu trữ phân tán cho
‫các giá trị chính.
‫Nó rất giống với cách Swarm hoạt động với hệ
‫thống thuật toán RAFT của nó.
‫Nó tương tự như etcd, nhưng etcd là một sản phẩm riêng biệt
‫và là thứ bạn có thể cài đặt mà không cần Kubernetes chỉ
‫để lưu trữ dữ liệu cấu hình.
‫Nó sử dụng cùng một giao thức RAFT, vì vậy rất nhiều quy tắc giống
‫nhau được áp dụng. Bạn cần số lẻ.
‫Bạn có thể bắt đầu với một, nhưng nếu bạn muốn có khả năng
‫chịu lỗi thực sự, bạn cần ba.
‫Và như thế. Trên hết, bạn
‫sẽ cần chạy nhiều vùng chứa Kubernetes sẽ lưu trữ
‫dữ liệu bên trong etcd và quản lý cụm.
‫Đầu tiên là API, đây sẽ là cách chúng
‫ta nói chuyện với cụm này và ra lệnh cho nó.
‫Tiếp theo là vùng chứa của bộ lập lịch, sẽ kiểm soát cách thức và
‫vị trí các vùng chứa của bạn được đặt trên các nút trong các
‫đối tượng được gọi là nhóm.
‫Tiếp theo là trình quản lý bộ điều khiển, nó xem trạng thái của toàn bộ
‫cụm và mọi thứ đang chạy trong đó và nó
‫sử dụng API để làm điều đó.
‫Nó nhận các đơn đặt hàng đang cung cấp cho nó hoặc thông số kỹ thuật và
‫xác định sự khác biệt giữa những gì bạn đang yêu cầu nó làm và
‫những gì thực sự đang diễn ra.
‫Về cơ bản nó là một
‫vòng lặp quan sát toàn bộ hệ thống và tìm ra cách
‫làm cho mọi thứ hiện đang diễn ra giống như những
‫gì bạn đã yêu cầu nó làm. Sau đó, bạn sẽ cần một thứ gì đó để
‫kiểm soát DNS, DNS không được tích hợp sẵn và theo mặc định, đó là coreDNS.
‫Tùy thuộc vào các tiện ích bổ sung khác mà bạn nhận
‫được sau này, như mạng hoặc lưu trữ, web và các tính
‫năng khác, bạn cũng sẽ có nhiều vùng chứa hơn
‫chạy ở đây.
‫Trên tất cả các nút, chúng sẽ cần một tác nhân chạy.
‫Nó được gọi là kubelet.
‫Để bắt đầu, bạn sẽ cần kube-proxy để
‫kiểm soát mạng.
‫Cũng giống như với Docker, tất cả những điều này sẽ được lặp lại
‫cho vai trò của chúng. Các master, nếu bạn định làm
‫multi master, sẽ có tất cả các vùng chứa giống nhau được thiết lập.
‫Mỗi nút mà bạn đặt cho các nút công nhân cũng
‫sẽ có ít nhất hai vùng chứa ở
‫đó để quản lý. Kubernetes được thiết kế để giải
‫quyết rất nhiều vấn đề theo nhiều cách.
‫Bạn sẽ thấy mình có thể thêm nhiều thứ hơn vào các trang
‫cái, nhiều thứ hơn cho các nút, chẳng hạn như mạng.
‫Về mặt chính, cũng có rất nhiều công cụ tùy chọn khác
‫để thêm vào nó.
‫Hãy bắt đầu cài đặt cái này trên hệ thống cục bộ của bạn để
‫học.