+3

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

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: Cài đặt Vagrant

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 đó

Screenshot 2023-03-11 at 16.00.36.png

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

Screenshot 2023-03-11 at 16.15.57.png

Bước 4: Cấu hình network

Ở đâ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

Bước 5: Vagrant up

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

Bước 5: Vagrant ssh và join các node vào master

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

Screenshot 2023-03-11 at 16.54.15.png

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

Screenshot 2023-03-11 at 19.47.59.png

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

Screenshot 2023-03-11 at 19.55.20.png

Screenshot 2023-03-11 at 19.55.50.png

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

Screenshot 2023-03-11 at 19.56.57.png

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

Screenshot 2023-03-11 at 20.00.07.png

vagrant ssh microk8s_worker_02

Screenshot 2023-03-11 at 20.00.33.png

vagrant ssh microk8s_worker_03

Screenshot 2023-03-11 at 20.00.52.png

vagrant ssh microk8s_worker_04

Screenshot 2023-03-11 at 20.01.22.png

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

Screenshot 2023-03-11 at 20.15.24.png

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí