硬件要求:

  • 2核CPU或更高配置
  • 2GB内存或更高配置
  • 20GB磁盘空间或更多
  • 连接互联网
  • 容器或虚拟机管理器,例如:Docker、Hyperkit、Hyper-V、KVM、Parallels、Podman、VirtualBox 或 VMware Fusion/Workstation

Windows下使用PowerShell安装

New-Item -Path 'd:\' -Name 'minikube' -ItemType Directory -Force
Invoke-WebRequest -OutFile 'd:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing

其中路径可以自定义

设置环境变量

$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
if ($oldPath.Split(';') -inotcontains 'd:\minikube'){ `
  [Environment]::SetEnvironmentVariable('Path', $('{0};d:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine) `
}

启动集群

minikube start

image-20220317145547820

默认情况下会使用Hyperv作为驱动

如果要使用Vmware或者其他,启动的时候需要指定

minikube start --driver vmware

image-20220317151042049

如果报Exiting due to PROVIDER_VMWARE_NOT_FOUND: The 'vmware' provider was not found: exec: "vmrun": executable file not found in $PATH信息,把vmware的安装路径加入系统环境变量就行。

image-20220317154504405

下载安装docker-machine-driver-vmware

https://github.com/machine-drivers/docker-machine-driver-vmware/releases/latest

下载然后放到系统中的任何位置都可以,但要把路径配置到环境变量中

再次启动

image-20220317155122888

启动成功

部署应用

创建应用YAML描述文件,这里以Nginx为例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

基于YAML文件创建部署

E:\>minikube kubectl -- apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created

查看部署信息:

minikube kubectl -- describe deployment nginx-deployment

image-20220317161830005

查看 ReplicaSet 对象的信息:

E:\>minikube kubectl -- get replicasets
NAME                         DESIRED   CURRENT   READY   AGE
nginx-deployment-9456bbbf9   2         2         2       17m

E:\>minikube kubectl -- describe replicasets

image-20220317163510364

创建公开 Deployment 的 Service 对象:

minikube kubectl -- expose deployment nginx-deployment --type=NodePort --name=web-servicevice
service/web-servicevice exposed

查看Service信息:

E:\>minikube kubectl -- get service web-servicevice
NAME              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
web-servicevice   NodePort   10.98.221.134   <none>        80:30074/TCP   30s

image-20220317170841260

查看 Service详情:

minikube kubectl -- describe services web-servicevice
Name:                     web-servicevice
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.98.221.134
IPs:                      10.98.221.134
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30074/TCP
Endpoints:                172.17.0.5:80,172.17.0.6:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

这里因为用了NodePort的方式暴露外部服务,记住这个端口

查看IP列表:

E:\>minikube kubectl -- get nodes -o wide
NAME       STATUS   ROLES                  AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION   CONTAINER-RUNTIME
minikube   Ready    control-plane,master   77m   v1.23.3   192.168.91.140   <none>        Buildroot 2021.02.4   4.19.202         docker://20.10.12

使用INTERNAL-IP加上NodePort的端口就可以访问应用了

curl http://http://<internal-ip>:<port>

image-20220317171830543

说点什么吧...