安装
https://developer.aliyun.com/article/221687
如需更新minikube,需要更新 minikube 安装包
先安装kubectl
https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b1177rqcc
MiniKube 的安装需要先安装 kubectl 及相关驱动
Debian / Ubuntu
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
# apt-get install -y kubelet kubeadm kubectl
apt-get install -y kubectl
CentOS / RHEL / Fedora
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
# yum install -y kubelet kubeadm kubectl
yum install -y kubectl
# systemctl enable kubelet && systemctl start kubelet
Minikube安装
Mac OSX
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
Linux
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
Windows
下载 minikube-windows-amd64.exe 文件,并重命名为 minikube.exe
启动
minikube start --cpus=4 --memory=4096mb --image-mirror-country cn --registry-mirror=https://tuy5brdc.mirror.aliyuncs.com
常用命令
# 进入集群节点
minikube ssh
# 查看节点 IP
minikube ip
# 停止集群
minikube stop
# 删除集群
minikube delete
在浏览器中打开 Kubernetes dashboard:
minikube dashboard
https://kubernetes.io/zh/docs/tutorials/hello-minikube/
你好 Minikube
本教程向您展示如何使用 Minikube 和 Katacoda 在 Kubernetes 上运行一个简单的 “Hello World” Node.js 应用程序。Katacoda 提供免费的浏览器内 Kubernetes 环境。
说明:
如果您已在本地安装 Minikube,也可以按照本教程操作。
教程目标
- 将 "Hello World" 应用程序部署到 Minikube。
- 运行应用程序。
- 查看应用日志
准备开始
本教程提供了从以下文件构建的容器镜像:
minikube/server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
minikube/Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]
有关 docker build
命令的更多信息,请参阅 Docker 文档。
创建 Minikube 集群
-
点击 启动终端
说明: If you installed Minikube locally, run minikube start
.
-
在浏览器中打开 Kubernetes dashboard:
minikube dashboard
-
仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 选择要在主机 1 上查看的端口。
-
仅限 Katacoda 环境:输入“30000”,然后单击 显示端口。
创建 Deployment
Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。Deployment 是管理 Pod 创建和扩展的推荐方法。
-
使用 kubectl create
命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
-
查看 Deployment:
kubectl get deployments
输出结果类似于这样:
```
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
```
-
查看 Pod:
kubectl get pods
输出结果类似于这样:
```
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
```
-
查看集群事件:
kubectl get events
-
查看 kubectl
配置:
kubectl config view
说明: 有关 kubectl 命令的更多信息,请参阅 kubectl 概述。
创建 Service
默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。要使得 hello-node
容器可以从 Kubernetes 虚拟网络的外部访问,您必须将 Pod 暴露为 Kubernetes Service。
-
使用 kubectl expose
命令将 Pod 暴露给公网:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
The --type=LoadBalancer
flag indicates that you want to expose your Service outside of the cluster.
-
查看您刚刚创建的服务:
kubectl get services
输出结果类似于这样:
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
```
在支持负载均衡器的云服务提供商上,将提供一个外部 IP 来访问该服务。在 Minikube 上,LoadBalancer
使得服务可以通过命令 minikube service
访问。
-
运行下面的命令:
minikube service hello-node
-
仅限 Katacoda 环境:单击加号,然后单击 选择要在主机 1 上查看的端口。
-
仅限 Katacoda 环境:请注意在 service 输出中与 8080
对应的长度为 5 位的端口号。此端口号是随机生成的,可能与您不同。在端口号文本框中输入您自己的端口号,然后单击显示端口。如果是上面那个例子,就需要输入 30369
。
这将打开一个浏览器窗口,为您的应用程序提供服务并显示 “Hello World” 消息。
启用插件
Minikube 有一组内置的 插件,可以在本地 Kubernetes 环境中启用、禁用和打开。
-
列出当前支持的插件:
minikube addons list
输出结果类似于这样:
```
|-----------------------------|----------|--------------|
| ADDON NAME | PROFILE | STATUS |
|-----------------------------|----------|--------------|
| ambassador | minikube | disabled |
| dashboard | minikube | enabled ✅ |
| default-storageclass | minikube | enabled ✅ |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gcp-auth | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | enabled ✅ |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled ✅ |
| storage-provisioner-gluster | minikube | disabled |
|-----------------------------|----------|--------------|
```
-
启用插件,例如 metrics-server
:
minikube addons enable metrics-server
输出结果类似于这样:
```
metrics-server was successfully enabled
```
-
查看刚才创建的 Pod 和 Service:
kubectl get pod,svc -n kube-system
输出结果类似于这样:
```
NAME READY STATUS RESTARTS AGE
pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m
pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m
pod/metrics-server-67fb648c5 1/1 Running 0 26s
pod/etcd-minikube 1/1 Running 0 34m
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-apiserver-minikube 1/1 Running 0 34m
pod/kube-controller-manager-minikube 1/1 Running 0 34m
pod/kube-proxy-rnlps 1/1 Running 0 34m
pod/kube-scheduler-minikube 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
```
-
禁用 metrics-server
:
minikube addons disable metrics-server
输出结果类似于这样:
```
metrics-server was successfully disabled
```
清理
现在可以清理您在集群中创建的资源:
kubectl delete service hello-node
kubectl delete deployment hello-node
可选的,停止 Minikube 虚拟机(VM):
minikube stop
可选的,删除 Minikube 虚拟机(VM):
minikube delete
https://minikube.sigs.k8s.io/docs/handbook/deploying/