Điểm:0

Chính sách mạng Kubernetes không được thực thi trừ khi bộ daemon plugin mạng được khởi động lại. Tại sao?

lá cờ br

Tôi chỉ có một chính sách mạng trong cụm của mình trong không gian tên prod chỉ cho phép các quy tắc xâm nhập. Plugin mạng là weaver-net. Không có quy tắc nào được định cấu hình cho Lối ra nên tôi cho rằng lưu lượng đi ra sẽ bị chặn. Nhưng cho đến khi tôi khởi động lại nhóm thiết lập daemon mạng, quy tắc không có hiệu lực. Tôi biết theo các phương pháp hay nhất, tôi nên có các quy tắc vào và ra mặc định. Nhưng tôi muốn hiểu lý do của hành vi này. Có phải bước này luôn được yêu cầu để khởi động lại nhóm plugin mạng không?

1. Định nghĩa chính sách mạng

apiVersion: mạng.k8s.io/v1
loại: NetworkPolicy
metadata:
  tên: thử nghiệm-chính sách mạng
  không gian tên: prod
thông số kỹ thuật:
  xâm nhập:
  - {}
  podSelector:
    trận đấuNhãn:
      chạy: prod-nginx
  loại chính sách:
  - Xâm nhập
  - Đi ra

2. Kiểm tra đối tượng netpol

Tên: test-network-policy
Không gian tên: prod
Được tạo vào: 2021-06-06 10:16:50 +0000 UTC
Nhãn: <không có>
Chú thích: <không có>
Thông số kỹ thuật:
  PodSelector: run=prod-nginx
  Cho phép lưu lượng truy cập:
    Đến cổng: <bất kỳ> (lưu lượng được phép đến tất cả các cổng)
    Từ: <bất kỳ> (lưu lượng truy cập không bị hạn chế bởi nguồn)
  Cho phép lưu lượng đi ra:
    <none> (Các nhóm được chọn được cách ly để kết nối đầu ra)
  Các loại chính sách: Ingress, Egress

3. Kiểm tra lưu lượng truy cập vào máy chủ nginx (Điều này là bất ngờ đối với sự hiểu biết của tôi)

Ghi chú: 10.39.0.5 là IP của máy chủ nginx đang chạy trong không gian tên 'thử nghiệm'

Lệnh: kubectl -n prod exec -it prod-nginx -- curl http://10.39.0.5 | grep thành công #egress
Phản hồi: <p>Nếu bạn thấy trang này, máy chủ web nginx đã được cài đặt thành công và

4. Khởi động lại các nhóm lưới dệt

5. Kiểm tra lại kết nối đầu ra tới cùng một máy chủ nginx (dự kiến)

Ghi chú: 10.39.0.5 là IP của máy chủ nginx đang chạy trong không gian tên 'thử nghiệm'

Lệnh: kubectl -n prod exec -it prod-nginx -- curl http://10.39.0.5 | grep thành công #egress**
Phản hồi: Không có kết nối
matt_j avatar
lá cờ in
Không cần thiết phải khởi động lại các Pod `weave-net`. Pod nào có địa chỉ IP `10.39.0.5`, bạn có thể mô tả nó không?
Rajesh Dutta avatar
lá cờ br
IP 10.39.0.5 thuộc về máy chủ nginx đang chạy trong một không gian tên khác ('test')
Rajesh Dutta avatar
lá cờ br
Tôi xin lỗi vì đã không đề cập đến điều này. Tôi đã cập nhật câu hỏi thêm Ghi chú về IP. Cảm ơn vì nỗ lực của bạn.
Điểm:0
lá cờ in

Tôi muốn cho bạn thấy rằng khởi động lại lưới dệt Pods không cần thiết cho Chính sách mạng có hiệu lực.

Của bạn chính sách kiểm tra mạng Chính sách mạng được áp dụng cho các Nhóm có nhãn chạy=prod-nginx bên trong sản xuất Không gian tên và cho phép tất cả lưu lượng truy cập vào và từ chối tất cả lưu lượng truy cập đi ra.

Tôi sẽ tạo một ví dụ để minh họa cách nó hoạt động.


Đầu tiên, tôi tạo prod-nginx & sản phẩm thử nghiệm Pods và kiểm tra kết nối mà không có Chính sách mạng triển khai:

# kubectl chạy prod-nginx --image=nginx -n prod
pod/prod-nginx được tạo

# kubectl chạy prod-test --image=nginx -n prod
đã tạo pod/prod-test
    
# kubectl get pod -o wide -n prod
TÊN TRẠNG THÁI SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI NHÃN IP
prod-nginx 1/1 Chạy 0 37s 10.44.0.1 run=prod-nginx
prod-test 1/1 Đang chạy 0 11 giây 10.44.0.2 run=prod-test

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.1 | grep -i thành công
<p>Nếu bạn thấy trang này, máy chủ web nginx đã được cài đặt thành công và

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.2 | grep -i thành công
<p>Nếu bạn thấy trang này, máy chủ web nginx đã được cài đặt thành công và

Mọi thứ hoạt động tốt, vì vậy hãy triển khai một chính sách kiểm tra mạng Chính sách mạng và kiểm tra lại:

# mèo netpol.yml 
apiVersion: mạng.k8s.io/v1
loại: NetworkPolicy
metadata:
  tên: thử nghiệm-chính sách mạng
  không gian tên: prod
thông số kỹ thuật:
  xâm nhập:
  - {}
  podSelector:
    trận đấuNhãn:
      chạy: prod-nginx
  loại chính sách:
  - Xâm nhập
  - Đi ra
  
# áp dụng kubectl -f netpol.yml 
networkpolicy.networking.k8s.io/test-network-policy đã tạo

Chúng ta có thể thấy rằng prod-nginx Pod không thể kết nối với các Pod khác nhưng có thể kết nối với chính nó:
GHI CHÚ: Một nhóm không thể chặn quyền truy cập vào chính nó (xem: Chính sách mạng tài liệu)

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.1 | grep -i thành công
<p>Nếu bạn thấy trang này, máy chủ web nginx đã được cài đặt thành công và
   
# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.2 | grep -i thành công
lệnh kết thúc bằng mã thoát 7

Bây giờ hãy tạo một sân khấu-nginx Vỏ trong sân khấu không gian tên và kiểm tra xem prod-nginx Pod có thể kết nối với nó:

# kubectl chạy giai đoạn-nginx --image=nginx -n giai đoạn
pod/giai đoạn-nginx được tạo

# kubectl get pod -o wide -n stage
TÊN TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI IP          
giai đoạn-nginx 1/1 Đang chạy 0 20 giây 10.44.0.6   

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.6 | grep -i thành công
lệnh kết thúc bằng mã thoát 7

Chúng tôi đã xác minh rằng quy tắc đầu ra đang hoạt động bình thường và đang khởi động lại lưới dệt Pods là không cần thiết.

Rajesh Dutta avatar
lá cờ br
Cảm ơn cho những nỗ lực. Tôi đã cập nhật câu hỏi bằng Ghi chú về IP.
Rajesh Dutta avatar
lá cờ br
Cảm ơn cho những nỗ lực. Tôi đã cập nhật câu hỏi bằng Ghi chú về IP. Bây giờ liên quan đến vấn đề. Hãy thử kết nối một máy chủ đang chạy trong một không gian tên khác. Trong trường hợp của tôi, tôi vẫn đang nhìn thấy vấn đề. Bạn có thể thử nhiều lần bật và tắt lối ra và xem liệu mỗi lần chính sách mạng có hoạt động như mong đợi mà không cần khởi động lại máy chủ weaver-net hay không. Trên thực tế, vấn đề cũng tồn tại với Ingress nhưng tôi đã chọn giải thích với egress. và cho đến nay những gì tôi quan sát được, điều này chỉ xảy ra khi bạn chỉ định loại chính sách (đầu ra trong trường hợp sử dụng của chúng tôi) không có quy tắc.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.