Giới thiệu về etcd – xương sống dữ liệu của Kubernetes

Etcd là gì

Video Etcd là gì
0*D6XJ0b7y9h6JP21y

Ảnh của Ben White trên Unsplash

kubernetes sử dụng etcd làm kho tài liệu phụ trợ chính của nó. Nó lưu trữ toàn bộ tài liệu đặc tả trong etcd ở định dạng khóa-giá trị. Nếu bạn mất etcd, kubernetes của bạn sẽ ngừng chạy. Kubernetes sử dụng etcd để lưu trữ trạng thái thực tế và mong muốn của mạng hệ thống. Sau đó, nó sử dụng chức năng đồng hồ etcd để theo dõi các thay đổi và điều chỉnh trạng thái mong muốn và v / s thực tế dựa trên điều khiển đó. Không chỉ kubernetes, mà còn các loại gật đầu khác như rook, coredns, v.v. 3 bản dùng thử miễn phí nền tảng không máy chủ vào năm 2021

Chính sách thiết kế mô hình dữ liệu quan trọng nhất

3 nền tảng không máy chủ miễn phí để dùng thử vào năm 2021

Một trong những tính năng thiết kế quan trọng nhất của etcd là – không có gì bị xóa trừ khi quản trị viên cắt bớt dữ liệu. Theo thiết kế, etcd lưu trữ dữ liệu dưới dạng các cặp khóa-giá trị đa vũ trụ – điều này có nghĩa là bất kỳ hoạt động nào trên dữ liệu của nó không cập nhật dữ liệu hiện có, nó sẽ tạo ra một phiên bản thay thế mới, do đó có tên là đa vũ trụ. Nếu bạn tạo một số dữ liệu trong etcd, phiên bản 1, thì khi bạn thực hiện một số thao tác trên cùng một dữ liệu, phiên bản 2 sẽ được tạo và phiên bản 1 sẽ giữ nguyên. Vì vậy, etcd thực sự là bất biến. Tất cả các phiên bản dữ liệu vẫn có thể truy cập và hiển thị mọi lúc.

Xem trong thực tế:

etcd sử dụng một thuật toán học tập dân số phân tán được gọi là bè. Thuật toán dựa trên ý tưởng rằng bất kể điều gì xảy ra, phải có một số đại biểu được xác định để hành động bởi (n / 2) + 1, n thành viên biểu quyết của mạng hệ thống phân tán. Khi một dự luật được yêu cầu, nó phải được biểu quyết bởi tất cả các thành viên biểu quyết. Nếu nó nhận được hơn 50% phiếu bầu, thì rất có thể xảy ra hành vi này. Trong trường hợp này, hành vi được ghi lại trên mỗi nút là nguồn gốc của điều thực. Với sự đồng thuận phân tán, bạn có thể an toàn biết rằng bất kỳ hành vi nào được ghi lại đều là hành vi được phép, cũng như tiến hành bầu cử chỉ huy và sao chép nhật ký. Đám mây phân tán là tương lai của đám mây vào năm 2021

Hoạt động – Phân nhóm

Nhìn chung, đám mây phân tán là tương lai của đám mây vào năm 2021, v.v.d chạy dưới dạng một cụm. Để nhóm các hoạt động giải trí, mỗi thành viên nên biết những người khác trong nhóm. Bạn có thể khởi động một cụm etcd hoàn toàn tĩnh hoặc sử dụng tính năng khám phá.

Tĩnh

Nếu chúng tôi biết trước thành viên cụm và kích thước cụm, bạn có thể sử dụng đặc tả khởi động ngoại tuyến để khởi động hoàn toàn cụm ngay lập tức. Chúng tôi khuyên bạn nên phân phối từng cụm mã thông tin cụm duy nhất của riêng nó để tránh nhầm lẫn với một cụm khác đang chạy trong mạng vì lý do bảo mật. Nhưng rất có thể tất cả các thành viên cụm đều hoàn toàn không được biết đến kể từ ngày chúng được tạo ra. Trong những trường hợp này, chúng tôi không sử dụng đặc tả tĩnh, mà sử dụng một trong các quy trình phát triển phát hiện sau đây.

Khám phá

Trong quá trình khởi động, tất cả chúng ta có thể sử dụng giao thức vá lỗi để tìm tổng số thành viên cần phải là một phần của một cụm nhất định. Hãy nhớ rằng giao thức dịch vụ vá lỗi chỉ được sử dụng trong quá trình khởi động cụm, nó không được sử dụng để cập nhật hoặc giám sát các thông số kỹ thuật của cụm. Ý tưởng là sử dụng một etcd nội bộ để điều phối bootstrap của một cụm mới, tức là tất cả các thành viên tiên phong tương tác với dịch vụ vá lỗi để tạo thành một danh sách cục bộ và sau đó mỗi thành viên tự khởi tạo. quá trình vá lỗi. Dưới đây là các bước trong quy trình vá lỗi:

  1. Đầu tiên hãy tạo một mã thông báo khám phá duy nhất.
  2. Kích thước cụm hiện đã được chỉ định.
  3. Bắt đầu quy trình etcd.
  4. Mỗi thành viên sẽ tự đăng ký vào url khám phá được chỉ định.
  5. Mỗi thành viên sẽ kiểm tra kích thước cụm dự kiến ​​và trạng thái đăng ký trong url khám phá. Nếu số lượng thành viên đăng ký nhiều hơn số lượng dự kiến ​​là n, nó sẽ coi n thành viên đăng ký đầu tiên là danh sách thành viên của cụm. Quá trình khám phá thành công nếu bản thân thành viên đó có trong danh sách thành viên. Nếu không có trong danh sách thành viên, quá trình khám phá kết thúc với một lỗi cụm đầy đủ.
  6. Nếu bước trước đó thành công, nó sẽ tiếp tục đợi cho đến khi tất cả các thành viên. bảng được tìm thấy.
  1. etcd Discovery – Trong phần này, bạn sử dụng tên máy cục bộ, tên máy chủ hoặc id máy để đăng ký thành viên và khởi động cụm.
  2. khám phá dns – như tên cho thấy, bản ghi dns srv có thể được sử dụng tại đây. Phần còn lại của quy trình vẫn giữ nguyên.

Trong etcd, bất kỳ thay đổi nào đối với đặc tả thời gian chạy phải trải qua 2 bước. Bước 1 – Bất kỳ thay đổi nào bạn muốn thực hiện, trước tiên bạn phải cho biết trạng thái chuẩn dự kiến ​​của cụm hiện có và nếu cụm đồng ý chấp nhận, bạn sẽ nhận được phản hồi / đồng ý thành công xuất sắc từ api. Bước 2 – Bây giờ hãy bắt đầu một thành viên mới với các giá trị chính xác này được xuất bản cho cụm ở bước 1. Khi một thành viên bắt đầu, nó sẽ liên hệ với cụm để khớp với giá trị định mức mong đợi và đợi nếu quá trình tiếp tục vượt qua nó sẽ không thành công.

Chủ động – Khôi phục sau thảm họa

Nếu nhóm vĩnh viễn mất nhiều hơn (n-1) / 2 thành viên, nhóm sẽ thất bại, mất số đại biểu không thể phục hồi. Khi số đại biểu bị mất, cụm không thể đạt được sự đồng thuận và do đó không thể tiếp tục chấp nhận các bản cập nhật chỉ đọc. Chúng tôi đặc biệt khuyến nghị rằng các hệ thống sản xuất sử dụng các phương tiện khôi phục và chụp nhanh etcd để lập kế hoạch và chuẩn bị cho thảm họa.

Vui lòng giữ ảnh chụp nhanh ở một cơ sở hạ tầng / vị trí lưu trữ riêng biệt, độc lập với các thành viên thực tế của cụm. Vị trí lưu trữ ảnh chụp nhanh sau đó được sao lưu trên bộ nhớ giá rẻ. Thỉnh thoảng hãy chạy kiểm tra ảnh chụp nhanh để đảm bảo rằng bạn có thể tận dụng tối đa nó để phục hồi tại thời điểm đó.

Nhà phát triển – sử dụng etcd cục bộ

Bạn có thể tải xuống các tệp nhị phân bản phát hành dựng sẵn từ https://github.com/etcd-io/etcd/releases/. Rất thuận tiện để bắt đầu một cụm cục bộ từ đây.

etcd cung cấp nhiều công cụ và thư viện cho các ngôn ngữ khác nhau như java, go, python, scala, perl, node, ruby. net, php và hơn thế nữa. Bạn có thể xem danh sách đầy đủ tại https://etcd.io/docs/current/integrations/.

Nhà phát triển – sử dụng api etcd

Mỗi yêu cầu api được gửi đến máy chủ etcd là một lệnh gọi thủ tục từ xa grpc. Các RPC trong etcd3 được phân loại thành các dịch vụ theo mục đích. Các dịch vụ quan trọng cần giải quyết và giải quyết những lỗ hổng lớn trong etcd bao gồm:

  • kv – Tạo, cập nhật, lấy và xóa các cặp khóa-giá trị.
  • đồng hồ – phím để thay đổi màn hình.
  • cho thuê – Sử dụng lý do tại sao khách hàng vẫn giữ tin nhắn.
  • auth – Cơ chế xác thực dựa trên vai trò để xác thực người dùng.
  • cluster – Cung cấp thông tin thành viên và các công cụ cấu hình.
  • bảo trì – khôi phục ảnh chụp nhanh, chống phân mảnh lưu trữ và trả về thông tin trạng thái cho từng thành viên.

Bạn có thể viết bằng / v3 / kv / put:

Thật tốt khi biết tài liệu phụ trợ nội bộ của kubernetes. Bạn không bao giờ biết khi nào một vài yếu tố mở tiếp theo sẽ liên quan đến etcd. Bên cạnh kubernetes, etcd cũng được sử dụng bởi nhiều mẫu sản phẩm khác. Bạn cũng có thể sử dụng nó như một kho lưu trữ khóa-giá trị đáng tin cậy cho các ứng dụng được phân phối của riêng bạn.