4

Chắc chắn một trong những cách triển khai Kubernetes dễ dàng nhất trong môi trường cục bộ là sử dụng minikube.

Đầu tiên nên hiểu rằng minikube là một máy ảo có cài đặt công cụ Docker. Công cụ Docker chạy trên máy cục bộ của bạn có trình nền Docker khác với trình nền được cài đặt trong minikube.

Bạn cũng có thể thưởng thức Hướng dẫn dành cho người mới bắt đầu của Linode về Kubernetes .

Chiến lược của Minikube là mặc định lấy các hình ảnh Docker từ kho lưu trữ. Có các kho lưu trữ mặc định được xác định trước được định cấu hình, nhưng chúng tôi sẽ không đi sâu vào các chi tiết đó. Khi bạn chạy lệnh sau để tạo nhóm, nó sẽ không thành công với lỗi vì nó sẽ không thể kéo hình ảnh từ kho lưu trữ.

kubectl run discovery –image=myproject/myimage –port=8761


Điều này là do nó không thể tìm thấy repo. Nếu bạn thực hiện ssh vào minikube:

minikube ssh

>docker images


Sau đó, bạn sẽ nhận thấy rằng không có hình ảnh nào để bạn chạy.

Có rất nhiều giải pháp cho vấn đề này, như tạo repo và đẩy hình ảnh vào đó, sao chép hình ảnh từ cục bộ sang minikube, v.v. Nhưng giải pháp đơn giản nhất là xây dựng hình ảnh đó thành chính minikube.

Đầu tiên, hãy lưu ý rằng khi bạn thực hiện lệnh  docker images từ dấu nhắc cục bộ, nó sẽ hiển thị các hình ảnh hiện diện trong môi trường Docker cục bộ của bạn.

Bây giờ chúng ta trỏ môi trường Docker cục bộ tới minikube bằng lệnh sau:

eval $(minikube docker-env)


Bây giờ nếu bạn thực hiện lệnh sau từ thiết bị đầu cuối của mình:

docker images


Nó sẽ hiển thị các hình ảnh trong minikube chứ không phải từ môi trường Docker cục bộ của bạn.

Cuối cùng, xây dựng hình ảnh từ thiết bị đầu cuối của bạn:

docker build -t myproject/myimage .


Hình ảnh sẽ  get build vào minikube chứ không phải vào môi trường Docker cục bộ của bạn. Xác minh điều này bằng lệnh sau:

minikube ssh

>docker images


Nếu bạn thực hiện lệnh sau ngay bây giờ:

kubectl run discovery –image=myproject/myimage –port=8761


Nó vẫn sẽ không thành công với cùng một vấn đề vì Kubernetes, theo mặc định, hoạt động trên chiến lược kéo và chúng ta cần vô hiệu hóa nó bằng cách thực hiện lệnh sau:

kubectl run discovery –image=myproject/myimage –image-pull-policy=Never –port=8761


Bây giờ nếu bạn kiểm tra các vỏ:

kubectl get pods


Nó sẽ cho thấy rằng nó đang chạy thành công.

|