Minikube

Minikube是一种可以轻松在本地运行Kubernetes的工具。 Minikube在笔记本电脑上的VM内运行一个单节点Kubernetes集群,以供希望试用Kubernetes或每天进行开发的用户使用。

Step-1

我们首先检验一下 minikube 的环境安装

1
minikube version

现在我们要在终端启动一个虚拟机,然后Kubenets部署在虚拟机里面去:

1
minikube start --wait=false
1
2
3
4
5
6
7
8
9
10
11
$ minikube start --wait=false
* minikube v1.8.1 on Ubuntu 18.04
* Using the none driver based on user configuration
* Running on localhost (CPUs=2, Memory=2460MB, Disk=145651MB) ...
* OS release is Ubuntu 18.04.4 LTS
* Preparing Kubernetes v1.17.3 on Docker 19.03.6 ...
- kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
* Launching Kubernetes ...
* Enabling addons: default-storageclass, storage-provisioner
* Configuring local host environment ...
* Done! kubectl is now configured to use "minikube"

Step-2

现在我们的已经有一个 Kubenets集群在运作了。继续看:

1
kubectl cluster-info

会打印处 cluster 的相关信息:

1
2
Kubernetes master is running at https://172.17.0.9:8443
KubeDNS is running at https://172.17.0.9:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

再来看一下我们使用到的节点:

1
2
3
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 100s v1.17.3

Step-3

使用kubectl run,它可以将容器部署到集群上:

1
kubectl create deployment first-deployment --image=katacoda/docker-http-server

现在我们拿到我们运行中的 Pods:

1
kubectl get pods

得到的信息如下:

1
2
NAME                               READY   STATUS    RESTARTS   AGE
first-deployment-666c48b44-8jcvk 1/1 Running 0 59s

容器运行后,可以根据要求通过不同的网络选项进行公开。 一种可能的解决方案是NodePort,它为容器提供了动态端口。

1
kubectl expose deployment first-deployment --port=80 --type=NodePort

得到的信息如下:

1
service/first-deployment exposed

下面的命令查找分配的端口并执行HTTP请求:

1
2
3
4
$ export PORT=$(kubectl get svc first-deployment -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}')$ echo "Accessing host01:$PORT"
Accessing host01:31727
$ curl host01:$PORT
<h1>This request was processed by host: first-deployment-666c48b44-8jcvk</h1>

The result is the container that processed the request.

Step-4

使用Minikube通过以下命令启用仪表板:

1
minikube addons enable dashboard

通过部署以下YAML定义,使Kubernetes仪表板可用。 仅应在Katacoda上使用。

1
kubectl apply -f /opt/kubernetes-dashboard.yaml

yaml 的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apiVersion: v1
kind: Namespace
metadata:
labels:
addonmanager.kubernetes.io/mode: Reconcile
kubernetes.io/minikube-addons: dashboard
name: kubernetes-dashboard
selfLink: /api/v1/namespaces/kubernetes-dashboard
spec:
finalizers:
- kubernetes
status:
phase: Active
---
apiVersion: v1
kind: Service
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard-katacoda
namespace: kubernetes-dashboard
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9090
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
type: NodePort

Kubernetes仪表板使您可以在UI中查看应用程序。 在此部署中,仪表板已在端口30000上可用,但可能需要一段时间才能启动。

要查看仪表板启动的进度,请使用以下命令查看kube-system命名空间中的Pod:

1
kubectl get pods -n kubernetes-dashboard -w