Minikube
Minikube是一种可以轻松在本地运行Kubernetes的工具。Minikube在笔记本电脑上的VM内运行一个单节点Kubernetes集群,以供希望试用Kubernetes或每天进行开发的用户使用。
Step-1
我们首先检验一下 minikube 的环境安装
minikube version
现在我们要在终端启动一个虚拟机,然后Kubenets部署在虚拟机里面去:
minikube start --wait=false
$ 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集群在运作了。继续看:
kubectl cluster-info
会打印出 cluster 的相关信息:
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
再来看一下我们使用到的节点:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 100s v1.17.3
Step-3
使用kubectl run,它可以将容器部署到集群上:
kubectl create deployment first-deployment --image=katacoda/docker-http-server
现在我们拿到我们运行中的 Pods:
kubectl get pods
得到的信息如下:
NAME READY STATUS RESTARTS AGE
first-deployment-666c48b44-8jcvk 1/1 Running 0 59s
容器运行后,可以根据要求通过不同的网络选项进行公开。一种可能的解决方案是NodePort,它为容器提供了动态端口。
kubectl expose deployment first-deployment --port=80 --type=NodePort
得到的信息如下:
service/first-deployment exposed
下面的命令查找分配的端口并执行HTTP请求:
$ 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
The result is the container that processed the request.
Step-4
使用Minikube通过以下命令启用仪表板:
minikube addons enable dashboard
通过部署以下YAML定义,使Kubernetes仪表板可用。仅应在Katacoda上使用。
kubectl apply -f /opt/kubernetes-dashboard.yaml
yaml 的内容如下:
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:
kubectl get pods -n kubernetes-dashboard -w
领取专属 10元无门槛券
私享最新 技术干货