‫Có hai phần siêu dữ liệu trong YAML này mà bạn
‫có thể đã thấy trong các ví dụ và
‫nghĩ về nó, tự hỏi những nhãn và chú thích thực sự ở đó
‫để làm gì.
‫Bạn có thể không nhận ra ý nghĩa của chúng.
‫Chúng là thành phần chính của Kubernetes và cách mọi thứ
‫kết nối với nhau.
‫Nhiều hơn rất nhiều so với Swarm.
‫Cái đầu tiên là nhãn. Các nhãn nằm dưới khóa siêu
‫dữ liệu trong thư mục gốc của tệp, vì vậy chúng là
‫tùy chọn ở đó. Bạn không phải đặt chúng
‫nhưng chúng là giá trị khóa hoặc danh sách các giá trị khóa bên
‫dưới tiêu đề nhãn.
‫Đó là vì nhiều lý do.
‫Chúng không phải lúc nào cũng bắt buộc, nhưng bạn có
‫thể cần chúng để chọn các đối tượng, nhóm chúng
‫và thậm chí lọc chúng sau này.
‫Đây có thể là bất kỳ thứ gì mô tả
‫đối tượng hoặc tài nguyên.
‫Nó có thể là một cặp giá trị khóa mà giá trị chỉ đơn giản
‫là đúng hoặc sai.
‫Chìa khóa có thể là bất cứ thứ gì bạn muốn.
‫Chỉ không thể có nhiều hơn một khóa trong mỗi đối tượng,
‫vì vậy bạn không thể có hai khóa liên tiếp trong
‫YAML cho cùng một đối tượng có tên khóa, giả
‫sử là ứng dụng, đúng không. Chúng thực sự được sử dụng để
‫mô tả đối tượng. Các tài nguyên mà chúng tôi đang tạo
‫này có các thuộc tính khác nhau đối với chúng.
‫Có thể đó là môi trường như sản xuất, nhà phát triển hoặc thử nghiệm.
‫Có thể đó là vị trí như dmz, phụ trợ
‫hoặc giao diện người dùng. Có thể đó là tên ứng dụng hoặc có
‫thể đó là tên khách hàng, nếu bạn đang lưu trữ các trang web khách hàng
‫hoặc một cái gì đó. Nó chỉ có thể là bất cứ
‫thứ gì bạn muốn và không có nhiều tiêu chuẩn.
‫Tài liệu Kubernetes được liệt kê trong các tài nguyên ở đây cung cấp
‫cho bạn một số ví dụ, nhưng đó chỉ là những ví dụ.
‫Không có nhiều tiêu chuẩn trong ngành.
‫Nó thực sự phụ thuộc vào nhóm của bạn và công ty của
‫bạn, về cách bạn muốn mô tả điều này.
‫Chúng tôi cũng có chú thích. Chúng giống như âm và dương.
‫Các nhãn rất đơn giản.
‫Chúng có kích thước rất hạn chế và bạn có thể đặt
‫những ký tự nào vào chúng. Chúng nhằm mục đích mô tả tài nguyên.
‫Với chú thích, điều này dành cho dữ liệu phức tạp hơn và dữ
‫liệu đa giá trị, những thứ tương tự như vậy.
‫Thông thường, bạn sẽ thấy các chú thích được sử dụng khi bạn
‫thêm nội dung tùy chỉnh vào Kubernetes để có thể nói chuyện
‫với Kubernetes và lấy dữ liệu ra khỏi nó.
‫Các chú thích ở đó để có thể lưu trữ dữ
‫liệu cấu hình, như proxy và nội dung nhập thường có thể lưu
‫trữ các cấu hình khác nhau, bên trong các chú thích khác nhau.
‫Vì vậy, những thứ đó không nhất thiết phải
‫có để mô tả mà còn nhiều hơn nữa để cấu hình.
‫Hãy quay lại các nhãn trong một phút, bởi vì còn rất nhiều
‫thứ nữa, đó là chìa khóa để hiểu cách tất cả những thứ này
‫hoạt động trong Kubernetes.
‫Điều đầu tiên là chúng ta có thể thực hiện các bộ lọc đơn
‫giản bằng cách giới hạn các nhãn từ dòng lệnh.
‫Chúng tôi có thể thực hiện lấy nhóm và chỉ cần nói, chỉ cho
‫tôi xem các nhóm có nhãn này.
‫Bạn thậm chí có thể sử dụng dấu phẩy ở đó để thêm nhiều nhãn.
‫Trên thực tế, có một cấp độ cú pháp hoàn toàn cho thứ này, nơi
‫bạn có thể thực hiện các loại cú pháp khác nhau, khác nhau hoặc
‫của và và của.
‫Thực sự, đó là một trong những điều mà
‫tôi không muốn dạy bạn tất cả những điều đó vì nó
‫sẽ giống như học Regex. Đó là thứ mà bạn sẽ không thực sự
‫học được nếu chỉ thử một lần.
‫Chỉ khi bạn cần, bạn mới thực sự
‫hiểu được nó. Tài liệu từ Kubernetes thực
‫sự tuyệt vời. Họ có nhiều liên kết
‫mà tôi đã đưa vào các tài nguyên sẽ đưa bạn qua tất cả các
‫cách khác nhau mà bạn có thể cần nhãn.
‫Thành thật mà nói, bạn không thực sự cần phải học điều đó cho đến
‫khi bạn biết rằng bạn cần nó để giải quyết một vấn đề.
‫Bạn thậm chí có thể sử dụng nó cho các lệnh áp dụng.
‫Nếu bạn có nhiều thứ trong một tệp YAML lớn và bạn
‫chỉ muốn áp dụng một số phần nhất định của
‫tệp YAML đó.
‫Tôi không làm điều này nhiều, nhưng đó là
‫nơi bạn có thể hạn chế nói, chỉ áp dụng các thay đổi
‫hoặc thông tin mà bạn đã đưa vào YAML cho các
‫nhãn cụ thể.
‫Tất nhiên, một lần nữa với cái này, bạn có thể
‫đặt cùng một cú pháp. Bạn chỉ có thể có một nhãn duy nhất.
‫Bạn có thể đặt dấu phẩy, có nhiều nhãn và giá
‫trị ở đó. Tuỳ bạn.
‫Có một điều khác mà các nhãn thực hiện, đó là điều quan trọng
‫đối với cách hoạt động của Kubernetes.
‫Có một số tài nguyên nhất định nói chuyện với các
‫tài nguyên khác, hoặc kết nối với chúng, hoặc
‫có liên quan đến chúng.
‫Tuy nhiên bạn muốn nói điều đó. Ví dụ điển hình
‫là các dịch vụ cần biết nhóm nào để gửi lưu
‫lượng truy cập của họ đến. Bạn có thể tự hỏi làm thế nào nó biết?
‫Ý tôi là, khi bạn nhập nó vào, nếu bạn thực hiện một Lệnh dịch vụ
‫kubectl và bạn đang trỏ nó đến việc triển khai, thì chính
‫xác nó đang sử dụng cái gì để xác định việc triển khai đó?
‫Chà, trong CLI, bạn sẽ nghĩ rằng nó thực sự trỏ
‫đến đối tượng triển khai.
‫Nhưng thực sự, dịch vụ cần nói chuyện với các nhóm, không phải bản
‫thân việc triển khai.
‫Nó sử dụng một thứ gọi là bộ chọn nhãn.
‫Điều này phổ biến với rất nhiều tài nguyên khác nhau có
‫mức độ trừu tượng cao hơn của nhóm.
‫Để họ liên quan đến nhóm hoặc biết nhóm nào là của họ,
‫họ sử dụng bộ chọn nhãn. Bạn sẽ thấy điều đó trong
‫YAML bên trong repo của chúng tôi mà bạn đã sử dụng
‫trong vài bài giảng gần đây nhất.
‫Nếu bạn nhìn vào ứng dụng. yml, bạn sẽ nhận thấy rằng cùng với
‫đó, chúng tôi đã có một vài điều trong đó mà
‫chúng tôi chưa nói đến. Phần đầu tiên nằm ở
‫phần trên cùng của dịch vụ, chúng tôi có một bộ chọn dưới đặc điểm kỹ thuật.
‫Điều đó phải có ở đó.
‫Chúng tôi đang cho nó biết chìa khóa và giá trị của nhãn
‫cho nhóm mà nó cần hướng lưu lượng truy cập đến.
‫Đó chỉ là một trận đấu đơn giản.
‫Nó cần phải tìm các nhóm với điều đó.
‫Sau đó, trong phần triển khai bên dưới, bạn sẽ
‫thấy rằng thông số kỹ thuật của chúng tôi
‫có bộ chọn riêng, matchLabels, app, app-nginx.
‫Điều gì đang xảy ra ở đó là cả hai đối tượng đó đều
‫đang chọn các nhóm dựa trên kết quả phù hợp đó.
‫Điều đó có nghĩa là trong mẫu dưới thông số kỹ thuật
‫của chúng tôi, nơi chúng tôi tạo mẫu các nhóm, cần có nhãn
‫đó trong đó để các tài nguyên đó có thể tìm thấy các
‫nhóm của chúng.
‫Điều thú vị là trong các phiên bản sau của Kubernetes, đó
‫là ít nhất chỉ với một lần triển khai duy nhất, chúng
‫phải đồng bộ với nhau. Nó thực sự sẽ không
‫triển khai được nếu thấy rằng các nhãn đối sánh của bộ chọn
‫không khớp với nhãn siêu dữ liệu mẫu vì chúng phải để
‫nó triển khai thậm chí các nhóm và có
‫thể kiểm soát chúng.
‫Nó ở đó để ngăn bạn vô tình
‫làm sai cách. Nó sẽ mong đợi
‫bạn có những mảnh trong đó. Trong các phiên bản cũ hơn, đã từng có
‫một cách mà nó sẽ tự động tạo chúng, theo mặc định, vì vậy bạn
‫có thể loại bỏ nội dung. Họ đã ngừng làm điều đó ngay bây
‫giờ, và họ buộc bạn phải đưa cái này vào đó. Tôi nghĩ đó là
‫một điều tốt, đặc biệt là tầm quan trọng
‫của những bộ chọn nhãn này. Về mặt kỹ thuật, nếu bạn quay
‫trở lại Swarm, Swarm thực hiện một chút gì đó khác thường ở đó
‫nó có các nhãn khớp với mọi thứ từ ngăn xếp đến dịch vụ
‫và ngăn xếp với khối lượng của chúng, và những thứ tương tự.
‫Chúng tôi không thực sự kiểm soát được nó và chúng tôi không nhìn thấy
‫nó nhiều trong giao diện. Nó được thực hiện
‫trong nền cho chúng tôi trong Swarm.
‫Nhưng, nó cũng rất hạn chế.
‫Bạn không thể thay đổi mọi thứ một cách nhanh chóng.
‫Bạn không nhất thiết phải đi và tùy chỉnh chúng cho các thiết lập
‫thực sự độc đáo.
‫Ở đây, chúng tôi có thể có một cuộc nói chuyện dịch vụ
‫với nhiều triển khai nếu chúng tôi muốn thay
‫đổi các bộ chọn đó.
‫Bộ chọn không chỉ liên kết các tài nguyên với nhau.
‫Đó cũng là việc kiểm soát nơi họ đi.
‫Trên các nút, bạn có thể sử dụng nhãn và bộ chọn để kiểm
‫soát vị trí của chúng.
‫Bạn có thể sử dụng tùy chỉnh hơn nữa với những thứ được
‫gọi là taints và dung sai, loại ngược lại với
‫việc bạn nói với các nút rằng chúng không thể làm những việc
‫nhất định để Kubernetes biết cơ bản kiểm soát nơi
‫các nhóm của bạn đi đến đâu.
‫Những thứ này thực sự tùy chỉnh và thực sự
‫nâng cao khá nhanh chóng. Làm tất cả chúng cùng nhau có
‫thể có một chút lông và điên rồ.
‫Tôi chắc chắn khuyên bạn nên làm chậm với chúng.
‫Giữ cho nó tất cả đơn giản bên ngoài hộp.
‫Tránh những điều xấu và sự dung thứ cho đến khi bạn thực sự cần
‫xem xét những điều đó.
‫Được rồi. Hãy dọn dẹp toàn bộ phần này.
‫Nếu bạn có bất kỳ thứ gì đang chạy trong không gian tên mặc định
‫cho cụm của mình, nếu bạn chỉ cần thực hiện kubectl là nhận được
‫tất cả và bạn thấy nội dung ở đó ngoài chính API Kubernetes, thì hãy
‫tiếp tục và xóa tất cả các tài nguyên đó vì chúng ta sẽ tiếp
‫tục . Chúng tôi sẽ không cần những thứ đó.