Sử dụng Privileged Pod để debug Kubernetes Node

Sử dụng Privileged Pod để debug Kubernetes NodeCuongquach.com | Đôi khi bạn sẽ sử dụng dịch vụ Managed Kubernetes bởi các nhà cung cấp cloud như AKS (Azure), EKS (Amazon), Kubernetes Digital Ocean,.. điểm chung cơ bản là bạn sẽ không được cung cấp cơ chế truy cập vào các Kubernete Node như ssh. Điều này là nhằm giảm các tương tác quản lý cho người vận hành, giúp họ thoải mái tập trung cho việc deployment các service trên nền tảng dịch vụ Cloud Kubernetes Platform. Nhưng sẽ có những lúc chúng ta có nhu cầu :

  • Truy cập vào Hệ điều hành Kubernetes Node để debug vài vấn đề liên quan đến Kubernetes Node.
  • Hay chúng ta muốn tìm hiểu thử các nhà cung cấp họ đã đang làm gì với Kubernetes Node.

Thế thì bạn có thể sử dụng một Privileged Pod để thực hiện điều đó.

su-dung-privileged-pod-debug-k8s-node

Privileged Pod

Đây là một mẹo thôi và đặt tên Pod cho nó tượng trưng, chứ không có khái niệm cụ thể Privileged Pod. Không khuyến khích hay thường nhìn thấy trong hoạt động quản lý Kubernetes Cluster.

Bạn sẽ tạo một Pod Container và mount toàn bộ root partition của OS Kubernetes Node vào một Volume. Rồi bạn chỉ cần mở shell terminal Pod container và thực hiện chuyển môi trường shell root “chroot” sang phân vùng mount volume OS Kubernetes Node.

Ví dụ:
– Sử dụng object DaemonSet để đảm bảo Pod này luôn được chạy ở các Node.

# vi debug-pod.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: privileged
spec:
  selector:
    matchLabels:
      name: privileged-container
  template:
    metadata:
      labels:
        name: privileged-container
    spec:
      containers:
      - name: busybox
        image: busybox
        resources:
          limits:
            cpu: 200m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 50Mi
        stdin: true
        securityContext:
          privileged: true
        volumeMounts:
        - name: host-root-volume
          mountPath: /host
          readOnly: true
      volumes:
      - name: host-root-volume
        hostPath:
          path: /
      hostNetwork: true
      hostPID: true
      restartPolicy: Always

# kubectl apply -f debug-pod.yaml

Liệt kê Pod ra nào.

# kubectl get pods -A | grep -i privileged
default privileged-wvsw6 1/1 Running 0 11s

Mở shell chroot vào môi trường OS của Kubernetes Node nào.

# kubectl exec -ti privileged-wvsw6 chroot /host

Lúc này bạn đã có thể chạy các lệnh Linux trên Kubernetes Node.

Nguồn: https://cuongquach.com/

Previous articleThông tin dải địa chỉ IP Public các dịch vụ AWS
Next articleEbook Kubernetes Past, Present and Future – eMag (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !