在Linux中使用minikube

Minikebehtml

Minikube是一個輕量級Kubernetes實現,它在本地機器上建立一個VM,並部署一個只包含一個節點的簡單集羣。linux

Minikube使用Docker機器來管理Kubernetes VM,所以它得益於Docker機器使用的驅動程序插件架構,該架構提供了一種一致的方式來管理各類VM提供者。Minikube嵌入了VirtualBox和VMware Fusion驅動程序,所以不須要額外的步驟來使用它們。可是,其餘驅動程序須要在主機路徑中提供額外的二進制文件。nginx

先決條件:git

  1. 系統支持虛擬化技術github

  2. 已安裝配置KVM2或Virtualboxchrome

  3. 已安裝Docker(Docher CE 或 Docker EE)docker

 

--KVM2 Driverapi

KVM2安裝(KVM2須要安裝libvirt 1.3.1或更高版本和qemu-kvm)xcode

  • Debian or Ubuntu 18.x: sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm
  • Ubuntu 16.x or older: sudo apt install libvirt-bin libvirt-daemon-system qemu-kvm
  • Fedora/CentOS/RHEL: sudo yum install libvirt-daemon-kvm qemu-kvm
  • openSUSE/SLES: sudo zypper install libvirt qemu-kvm

  檢查virsh版本: virsh --versionbash

  若版本高於1.3.1則可下載預構造的KVM2 driver

curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \
  && sudo install docker-machine-driver-kvm2 /usr/local/bin/
#查看kvm driver版本

docker-machine-driver-kvm2 version

  

--安裝Docker

yum install docker -y

--安裝minikube 1.2.0

curl -L minikube https://storage.googleapis.com/minikube/releases/v1.2.0/minikube-linux-amd64 -o /usr/local/bin/minikube

--安裝kubectl 1.15.0

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl

--啓動libvirtd服務

systemctl enable libvirtd.service
systemctl start libvirtd.service
systemctl status libvirtd.service

#將當前用戶加入libvirt組
usermod -a -G libvirt $(whoami)
#切換用戶有效組
newgrp libvirt

--啓動minikube

minikube start --vm-driver=kvm2

#可將kvm2設置爲默認driver
minikube config set vm-driver kvm2
#個人啓動輸出,爲了出現沒必要要麻煩,我使用root安裝的
[root@oc1657727366 ~]# minikube start --vm-driver=kvm2
😄 minikube v1.2.0 on linux (amd64)
⚠️ Please don't run minikube as root or with 'sudo' privileges. It isn't necessary.
🔥 Creating kvm2 VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
🐳 Configuring environment for Kubernetes v1.15.0 on Docker 18.09.6
💾 Downloading kubeadm v1.15.0
💾 Downloading kubelet v1.15.0
🚜 Pulling images ...
🚀 Launching Kubernetes ... 
⌛ Verifying: apiserver proxy etcd scheduler controller dns
🏄 Done! kubectl is now configured to use "minikube"

#查看minikube狀態

[root@oc1657727366 ~]# minikube status
host: Running
kubelet: Running
apiserver: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.39.42

  

--minikube使用

 
#建立一個名爲my-nginx的deployment
[root@oc1657727366 ~]# kubectl create deployment --image=nginx my-nginx
deployment.apps/my-nginx created


#查看pod列表
[root@oc1657727366 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-nginx-f969cff84-kcc49 1/1 Running 0 6m21s


#查看已創建的deployment
[root@oc1657727366 ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
my-nginx 1/1 1 1 7m19s


#擴展nginx pod數量到兩個
[root@oc1657727366 ~]# kubectl scale deployment --replicas 2 my-nginx
deployment.extensions/my-nginx scaled


#再次查看pod列表
[root@oc1657727366 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-nginx-f969cff84-c92vj 1/1 Running 0 9s
my-nginx-f969cff84-kcc49 1/1 Running 0 9m28s
#經過minikube打開dashboard
[root@oc1657727366 ~]# minikube dashboard
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:43575/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...
START /usr/bin/google-chrome-stable "http://127.0.0.1:43575/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/"
[18070:18070:0717/193410.832958:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

 

--其餘

# 查看集羣的全部資源
kubectl get all
kubectl get all -o wide

# 進入節點服務器
minikube ssh

# 執行節點服務器命令,例如查看節點 docker info
minikube ssh -- docker info

# 刪除集羣
minikube delete

# 關閉集羣
minikube stop
#進入節點服務器後能夠查看當前docker服務,開啓容器交互模式終端
[root@oc1657727366 ~]# minikube ssh
                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ who am i
docker   pts/0        Jul 17 12:04 (192.168.39.1)
$ ip add|grep 'inet '
    inet 127.0.0.1/8 scope host lo
    inet 192.168.122.246/24 brd 192.168.122.255 scope global dynamic eth0
    inet 192.168.39.42/24 brd 192.168.39.255 scope global dynamic eth1
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
$ uname -r
4.15.0
$ cat /etc/os-release       
NAME=Buildroot
VERSION=2018.05.3
ID=buildroot
VERSION_ID=2018.05.3
PRETTY_NAME="Buildroot 2018.05.3"

$ docker ps

$ docker exec -it e86496c07070 /bin/bash

  

  

  

  

參考網站:

https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver

https://github.com/kubernetes/examples/blob/master/staging/simple-nginx.md

https://xcodest.me/minikube.html

相關文章
相關標籤/搜索