‫Tôi sẽ thành thật.
‫Quay lại lần đầu tiên tôi nhìn thấy Kubernetes YAML, tôi thực
‫sự rất sợ hãi.
‫Nó có vẻ phức tạp hơn so với định dạng Soạn thư.
‫Đó là lý do chính đáng.
‫Nó bổ sung thêm rất nhiều tính linh hoạt, nhiều thứ
‫hơn bạn có thể làm với nó. Nhưng, cái giá phải trả.
‫Đó là vượt qua khó khăn của việc tìm hiểu các kiến thức cơ bản và cách
‫tạo các tệp này. Khi bạn lần đầu tiên
‫bắt đầu xem những tệp này, có nhiều điều đến mức tôi thậm chí không chắc
‫chuyện gì đang xảy ra khi lần đầu tiên cầm những tệp này.
‫Hoàn toàn hiểu nếu bạn đang cảm thấy hơi
‫bối rối về điều này khi chúng ta xem qua,
‫chỉ cần cố gắng xem lại những video này vì tôi sẽ cố
‫gắng phân tích điều này theo cách mà tôi nghĩ là tốt
‫nhất để học Kubernetes YAML.
‫Đầu tiên là chúng ta có thể viết điều này về mặt
‫kỹ thuật trong JSON, nhưng YAML có xu hướng dễ dàng
‫hơn cho con người để thao tác và đọc,
‫và JSON tốt hơn cho máy tính.
‫Những gì đang xảy ra trong nền là tiêu chuẩn đối với con
‫người chúng ta là viết YAML và sau đó nó sẽ
‫chuyển đổi nó thành JSON. Về mặt kỹ thuật, bạn có
‫thể viết JSON, nhưng tiêu chuẩn với Kubernetes để
‫con người viết là YAML.
‫Giống như tôi đã nói trước đây, bạn có thể trộn
‫hoặc kết hợp các tệp này. Bạn có thể có nhiều tài nguyên khác nhau trong một tệp
‫và sau đó làm ngược lại với điều đó khi bạn có
‫một tệp cho mỗi tài nguyên.
‫Không thực sự quan trọng. Tuỳ bạn.
‫Các lệnh hoạt động theo cùng một cách.
‫Chúng tôi đang gọi những tệp kê khai này.
‫Mô tả đầy đủ của một tài nguyên là một
‫tệp kê khai và tệp kê khai đó có các yêu cầu.
‫Bạn sẽ thấy những yêu cầu đó đối với khóa gốc bên
‫trong tệp YAML.
‫Gốc nghĩa là chúng ở đầu dòng.
‫Điều đó bắt đầu với phiên bản
‫API. Có loại.
‫Có siêu dữ liệu. Và có thông số kỹ thuật.
‫Vì vậy, bạn phải xem những thứ đó trong mỗi tệp để
‫các tài nguyên này hoạt động. Và chúng ta hãy xem xét một số
‫ví dụ nhanh từ dòng lệnh.
‫Nếu bạn đang ở trong repo Docker Mastery của mình, bạn sẽ thấy thư
‫mục k8s-yaml nơi tôi đã đưa một số
‫ví dụ này vào đây.
‫Nếu bạn không thấy thư mục đó, thì bạn có thể
‫cần thực hiện git-pull để nhận các bản cập nhật
‫mới nhất cho repo. Nếu bạn đã thực hiện một số thay đổi trong repo khi
‫tham gia khóa học này, điều đó là tốt.
‫Bạn có thể sử dụng git-stash để tạm thời lưu trữ những thay đổi
‫đó và sau đó thực hiện git-pull.
‫Hoặc, bạn có thể sao chép nó vào
‫một thư mục khác. Chỉ cần sao chép
‫nó ở một vị trí khác cho phần này của khóa học,
‫vì nội dung Kubernetes này mới hơn nội dung gốc.
‫Vì vậy, một số bạn có thể quay lại vào lúc này và
‫không có bản cập nhật mới nhất.
‫Ví dụ đầu tiên ở đây chỉ là một pod đơn giản.
‫Đây có lẽ là YAML đơn giản nhất mà chúng tôi có thể tạo.
‫Giống như tôi đã nói trước đó trong khóa học này, bạn sẽ không tạo
‫ra nhiều nhóm như vậy bởi vì điều đó chỉ tạo ra
‫giống như một docker chạy.
‫Đó không thực sự là điều bạn sẽ muốn làm.
‫Nó không có các bản cập nhật liên tục. Nó không phải
‫là một triển khai, phải. Nếu bạn cần khắc phục sự cố hoặc bạn
‫chỉ cần chạy một cái gì đó đơn giản cục bộ, bạn có thể làm điều này.
‫Bạn sẽ nhận thấy nó có bốn yêu cầu giống nhau.
‫Phiên bản API, loại, siêu dữ liệu và
‫thông số kỹ thuật.
‫Chúng ta sẽ nói về những điều đó trong bài giảng tiếp theo.
‫Bây giờ, tôi chỉ muốn bạn xem loại
‫này là vỏ như thế nào. Sau đó, siêu
‫dữ liệu có thuộc tính tên.
‫Khóa đó là khóa bắt buộc của tất cả các
‫đối tượng YAML.
‫Tất cả chúng đều phải có tên đó, giống như docker run
‫phải có tên. Tất cả các đối tượng Docker phải có một tên.
‫Tương tự với Kubernetes. Thông số kỹ thuật ở đây là thịt.
‫Chúng tôi sẽ đạt được điều đó trong giây lát. Chúng ta hãy xem xét một
‫triển khai khác.
‫Đây là một triển khai duy nhất
‫với hai bản sao của cùng một vùng chứa đó. Nó có thể lớn gấp
‫đôi nhưng vì lý do chính đáng.
‫Bởi vì nếu bạn nghĩ về nó, bạn
‫đang tạo tài nguyên triển khai đó, và sau đó
‫bạn đang tạo ReplicaSet. Sau đó, đó là tạo các nhóm.
‫Khu vực thông số kỹ thuật
‫trở nên phức tạp hơn một chút vì nó thực hiện nhiều
‫thứ hơn mà chúng ta phải xác định. Bạn cũng sẽ nhận thấy rằng phiên
‫bản API của chúng tôi hơi
‫khác vì nó liên quan đến loại và loại trong trường hợp này
‫là một triển khai. Đó là loại như vậy có nghĩa là tài nguyên.
‫Và phiên bản API là phiên bản của
‫API cho loại đó. Phần còn lại ở đây hy vọng có một
‫chút ý nghĩa đối với bạn.
‫Nó trông hơi giống với Soạn tệp nhưng rõ
‫ràng là định dạng khác.
‫Vì vậy, tôi hiểu nó có thể gây nhầm lẫn, đặc biệt
‫nếu bạn đang làm việc qua lại giữa Compose và Kubernetes.
‫Trong ví dụ này, tôi đã kết hợp dịch
‫vụ và triển khai, cho
‫cùng một kiểu triển khai đó, thành một tệp duy nhất.
‫Đây là cách bạn có nhiều tệp kê khai trong một tệp khi bạn sử dụng
‫ba dấu gạch ngang để tách
‫hai tệp đó ra. Đó là
‫một thứ YAML sẽ nói với Kubernetes rằng, đối tượng này
‫là duy nhất. Sau đó, phần tiếp
‫theo là một đối tượng mới. Bạn có thể có bao nhiêu tùy
‫thích ở đây cho đến khi nó trở nên ngỗ ngược đến mức bạn phải phá bỏ nó.
‫Bạn sẽ thấy với phần đầu tiên này, phiên bản API
‫là V1 của loại tài nguyên dịch vụ.
‫Từ loại ở đây có thể chỉ là tài nguyên, nhưng họ
‫đã gọi nó là tử tế.
‫Siêu dữ liệu ở đây một lần nữa. Phải có một cái tên.
‫Thông số kỹ thuật và điều đó sẽ hoàn toàn khác nhau
‫dựa trên tài nguyên bạn đang tạo.
‫Sau đó, một triển khai tương tự như những gì chúng tôi đã có trước
‫đó, mà trường hợp này tôi có ba bản sao và nó có một
‫cái tên hơi khác, nhưng khác với điều đó, đó
‫là cùng một Nginx.
‫Chỉ cần nhìn vào đó, bạn đang nghĩ, wow. Tôi phải cần các
‫mẫu mà tôi sẽ lưu trữ để tôi biết cách bắt đầu vì
‫điều này có vẻ khá phức tạp.
‫Không có trang tài liệu duy nhất giải thích tất cả
‫những điều này cho tất cả hàng chục và hàng chục loại tài
‫nguyên khác nhau và cách mỗi loại tài nguyên cần được thiết lập.
‫Thật không may, đó là điều mà chúng tôi nhận được với Compose,
‫nơi nó là một đĩa đơn hay, mặc dù dài.
‫trang web trên Docker tài liệu cho toàn bộ
‫định dạng Soạn thư. Trong trường hợp này, chúng tôi
‫không hiểu được điều đó với Kubernetes đơn giản vì có quá nhiều
‫phức tạp và tất cả không ở cùng một nơi.
‫Nó thậm chí không phải là một ứng dụng. Bạn thực sự có thể thêm nhiều
‫loại tài nguyên hơn bằng cách thêm nhiều thứ được gọi là CRD
‫mà chúng ta sẽ nói sau.
‫Chúng ta có thể hiểu được điều đó. Về cơ bản, điều đó có nghĩa là bạn
‫có thể mở rộng Kubernetes với nhiều loại tài nguyên hơn.
‫Nhiều nội dung của bên thứ ba hơn, thậm chí sẽ thêm nhiều tùy
‫chọn hơn cho YAML này. Đó là duy nhất của Kubernetes.
‫Swarm và Docker không cho phép điều đó.
‫Định dạng của chúng được đặt ở nơi có thể mở
‫rộng được, tùy thuộc vào những gì được cài đặt trong cụm của
‫bạn.