- vừa được xem lúc

Bài 2.2 : Cài đặt và chạy môi trường ảo hoá Oracle VM VirtualBox 7 bằng Vagrant

0 0 16

Người đăng: DUY TRAN

Theo Viblo Asia

Nếu bạn một Lập trình viên, nhà phát triển phần miềm, kiểm thử phần miềm, designer, một ngày đẹp trời đội dự án kiêu bạn vào và kiêu bạn chạy thử phần miềm trên máy bạn, bạn phải xây dựng 1 hệ thông y chang nhưng máy bạn, để cho tiện việt phát trển và kiểm thử, và hạn chế các câu hỏi "Tại sao máy tôi chạy được, mà máy bạn chạy không được", thì chúng ta có thể dùng Vagrant để đồng bộ cho môi trường phát triển

Vagrant là gì?

Vagrant là một công cụ để làm việc với các môi trường ảo và trong hầu hết các trường hợp, điều này có nghĩa là làm việc với các máy ảo. Vagrant cung cấp một ứng dụng khách lệnh đơn giản và dễ sử dụng để quản lý các môi trường này và một trình thông dịch cho các định nghĩa dựa trên văn bản về mỗi môi trường trông như thế nào, được gọi là vagrantfiles. Vagrant là nguồn mở, có nghĩa là bất cứ ai cũng có thể tải xuống, sửa đổi nó và chia sẻ nó một cách tự do.

Mặc dù nhiều trình lập trình máy ảo cung cấp giao diện dòng lệnh của riêng họ và về mặt kỹ thuật việc cung cấp các máy ảo thông qua các chương trình này có thể được thực hiện trực tiếp hoặc thông qua các tập lệnh shell, lợi thế khác cung cấp bằng cách thêm một lớp bổ sung là đơn giản, khả năng tương tác trên nhiều hệ thống và Một cách tiếp cận nhất quán hơn về mặt lý thuyết có thể được sử dụng với bất kỳ môi trường ảo nào chạy trên bất kỳ hệ thống nào khác.

Bằng cách cung cấp một định dạng dựa trên văn bản phổ biến để làm việc với các máy ảo, môi trường của bạn có thể được xác định trong mã, giúp bạn dễ dàng sao lưu, sửa đổi, chia sẻ và quản lý với kiểm soát sửa đổi. Điều đó cũng có nghĩa là thay vì chia sẻ toàn bộ hình ảnh máy ảo, có thể là nhiều gigabyte, mỗi khi thay đổi được thực hiện với cấu hình, một tệp văn bản đơn giản chỉ có thể chia sẻ một vài kilobyte.

IP Hostname vCPU RAM DISK
192.168.56.2 microk8s-master-1 1 core 2G 50G
192.168.56.3 microk8s-master-2 1 core 2G 50G
192.168.56.4 microk8s-master-3 1 core 2G 50G
192.168.56.5 microk8s-worker-1 1 core 2G 50G
192.168.56.6 microk8s-worker-2 1 core 2G 50G
192.168.56.7 microk8s-worker-3 1 core 2G 50G
192.168.56.8 microk8s-worker-4 1 core 2G 50G

Cài đặt Vagrant

Bước 1: Ta cài đặt Oracle VM VirtualBox 7

Bạn vui lòng tham khảo ở bài 2.1

https://viblo.asia/p/bai-2-tao-may-ao-ubuntu-2204-bang-oracle-vm-virtualbox-7-r1QLxQZgVAw

Bước 2: Chúng ta vào trang chủ của vagrant để tải tiệp cài đặt về https://developer.hashicorp.com/vagrant/downloads tuỳ theo hệ điều hành thì chúng ta sẽ chọn tiệp cài đặt đó

Bước 3: Sau khi cài đặt thành công ta tạo file Vagriantfile

Vagrant.configure("2") do |config| config.vm.box = "ubuntu/focal64" config.winrm.timeout = 1800 # 30 minutes config.vm.boot_timeout = 1800 # 30 minutes config.vm.provider "virtualbox" do |vb| vb.memory = 2048 vb.cpus = 2 end config.vm.provision "shell", inline: <<-EOF apt install net-tools ifconfig snap install microk8s --classic microk8s.status --wait-ready microk8s.enable dns usermod -a -G microk8s vagrant echo "alias kubectl='microk8s.kubectl'" > /home/vagrant/.bash_aliases chown vagrant:vagrant /home/vagrant/.bash_aliases echo "alias kubectl='microk8s.kubectl'" > /root/.bash_aliases chown root:root /root/.bash_aliases echo " #master 192.168.56.2 microk8s-master-01 192.168.56.3 microk8s-master-02 192.168.56.4 microk8s-master-03 #worker 192.168.56.5 microk8s-worker-01 192.168.56.6 microk8s-worker-02 192.168.56.7 microk8s-worker-03 192.168.56.8 microk8s-worker-04 " > /etc/hosts cat /etc/hosts EOF config.vm.define "microk8s_master_01" do |microk8s_master_01| microk8s_master_01.vm.hostname = "microk8s-master-01" microk8s_master_01.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_master_01.vm.network "private_network", ip: "192.168.56.2" microk8s_master_01.vm.provider "virtualbox" do |vb| vb.name = "microk8s-master-01" end end config.vm.define "microk8s_master_02" do |microk8s_master_02| microk8s_master_02.vm.hostname = "microk8s-master-02" microk8s_master_02.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_master_02.vm.network "private_network", ip: "192.168.56.3" microk8s_master_02.vm.provider "virtualbox" do |vb| vb.name = "microk8s-master-02" end end config.vm.define "microk8s_master_03" do |microk8s_master_03| microk8s_master_03.vm.hostname = "microk8s-master-03" microk8s_master_03.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_master_03.vm.network "private_network", ip: "192.168.56.4" microk8s_master_03.vm.provider "virtualbox" do |vb| vb.name = "microk8s-master-03" end end config.vm.define "microk8s_worker_01" do |microk8s_worker_01| microk8s_worker_01.vm.hostname = "microk8s-worker-01" microk8s_worker_01.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_worker_01.vm.network "private_network", ip: "192.168.56.5" microk8s_worker_01.vm.provider "virtualbox" do |vb| vb.name = "microk8s-woker-01" end end config.vm.define "microk8s_worker_02" do |microk8s_worker_02| microk8s_worker_02.vm.hostname = "microk8s-worker-02" microk8s_worker_02.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_worker_02.vm.network "private_network", ip: "192.168.56.6" microk8s_worker_02.vm.provider "virtualbox" do |vb| vb.name = "microk8s-worker-02" end end config.vm.define "microk8s_worker_03" do |microk8s_worker_03| microk8s_worker_03.vm.hostname = "microk8s-worker-03" microk8s_worker_03.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_worker_03.vm.network "private_network", ip: "192.168.56.7" microk8s_worker_03.vm.provider "virtualbox" do |vb| vb.name = "microk8s-worker-03" end end config.vm.define "microk8s_worker_04" do |microk8s_worker_04| microk8s_worker_04.vm.hostname = "microk8s-worker-04" microk8s_worker_04.vm.network "public_network", bridge: "VirtualBox Host-Only Ethernet Adapter" microk8s_worker_04.vm.network "private_network", ip: "192.168.56.8" microk8s_worker_04.vm.provider "virtualbox" do |vb| vb.name = "microk8s-worker-04" end end
end

Ở đây mình tạo 2 network public_networkprivate_network

  • public_network: Kết nối trược Internet
  • private_network: Không kết nối trược Internet chỉ kết nối được mạng LAN nội bộ của VirtualBox

Sau khi tạo xong thì chúng ta sử dụng lệnh Vagrant up để chạy môi trường ảo hoá lên

Vagrant up 

Tuỳ theo mạng và cấu hình máy của bạn, bước này tầm 30 -> 60p

Sau đó bạn mở Oracle VM VirtualBox và xem các máy ảo đã tạo và start lên chưa

Như vậy đã start thành công tiếp tục ta ssh vào máy microk8s-master-01 bằng lệnh

vagrant ssh microk8s_master_01

Tiếp tục ta tạo token để kết nối vào cụm microk8s

microk8s add-node

sau đó ta ssh vào các máy microk8s-master-02microk8s-master-03 để join vào các máy master

Chunng ta sử dụng lệnh microk8s join để kết nối 2 máy vào cum master

microk8s join 192.168.56.2:25000/f9b92e3f904dd17cba2332a88a3092da/a25a7c633d5c

Ta dùng lệnh microk8s kubectl get no để check xem 2 node master 01 vs master 02 đã join chưa

microk8s kubectl get no

Như vậy cụm master đã join thành công, bây giờ ta thực hiện với cụm worker, sau đó ta ssh vào các máy microk8s-worker-01, microk8s-worker-02, microk8s-worker-03, microk8s-worker-04 để join vào các máy worker

vagrant ssh microk8s_worker_01

vagrant ssh microk8s_worker_02

vagrant ssh microk8s_worker_03

vagrant ssh microk8s_worker_04

Sau khi login vào các worker thành công ta vào con microk8s-master-01 gõ lệnh **microk8s add-node **

microk8s add-node 

Ta sử dụng token có ip là 192.168.56.2 và thêm --worker ở cuối, và áp dụng cho tất cả các máy worker

microk8s join 192.168.56.2:25000/{toke} --worker

Ta dùng lệnh microk8s kubectl get no trên máy master 01 để check xem các node woker đã kết nối được chưa

Như vậy ta đã tạo máy ảo thành công và kết nối được 3 master với 4 worker

Cảm ơn các bạn đã theo dõi bài viết của mình, nếu các bạn thấy hay thì cho mình 1 upvote để có thêm động lực chia sẽ nhiều bài viết hữu ích hơn

Bình luận

Bài viết tương tự

- vừa được xem lúc

Golang Data Structures and Algorithms - Stack

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 27

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - Secrets Manager

Introduction. A quick note about AWS Secrets Manager.

0 0 32

- vừa được xem lúc

Golang Data Structures and Algorithms - Queue

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 38

- vừa được xem lúc

Terraform Series - Bài 17 - Security - Manage Secrets with Vault

Giới thiệu. Chào các bạn tới với series về Terraform, ở bài trước chúng ta đã tìm hiểu về vấn đề security trong Terraform.

0 0 26

- vừa được xem lúc

Golang Data Structures and Algorithms - Linked Lists

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 28

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - AWS Certificate Manager

Introduction. A quick note about AWS Certificate Manager.

0 0 21