miniKube 是单机版kubernetes, 可以配置运行在同一台主机上的服务和pod,并使用docker作为虚拟化工具
下载:直接下载可执行文件,复制到path 路径,免安装。
启动:minikube 支持多种虚拟化工具,如:virtualbox, 不过在linux里可以支持docker
minikube start --vm-driver=none
等待一会最终输出 * Done! kubectl is now configured to use "minikube"
由于需要下载很多支持的东西,经常失败,最好添加74.125.204.82 k8s.gcr.io
到hosts文件。
然后创建一个Deployment
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
这个镜像下载比较慢,可以下载阿里的registry.cn-qingdao.aliyuncs.com/k8slast/echoserver
即
kubectl run hello-minikube --image=registry.cn-qingdao.aliyuncs.com/k8slast/echoserver --port=8080
输出:deployment.apps/hello-minikube created
再将deployment 暴露成服务
kubectl expose deployment hello-minikube --type=NodePort
输出:service/hello-minikube exposed
最后获取访问url
minikube service hello-minikube --url
输出访问url:http:://xxxxx:port
通过url可以访问服务资源
删除服务资源
minikube delete service hello-minikube
minikube delete deployment hello-minikube
minikube stop && minikube delete
一个简单的演示完成
--dry-run -o yaml
来导出yaml 文件,简化编写效率apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: myapp
name: myapp
spec:
replicas: 1
selector:
matchLabels:
run: myapp
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: myapp
spec:
containers:
- image: 'springboot'
name: myapp
ports:
- containerPort: 8088
resources: {}
status: {}
这里说明一下参数
kind:Deployment, 这里表示这个yaml是用来生成deploy的,另外还有Service,
replicas: 1 这个表示备份的个数,1个表示一个pod
其他配置看字面意思可以理解。
这个yaml是通过dry-run 生成的,dry-run 意思是只跑一遍,但不会生成资源
minikube run myapp --image=springboot --port=8088 --dry-on -o yaml
将命令的输出保存到demo.yaml, 有了yaml 文件可以直接指定文件执行,跟上面的命令一样的效果
minikube create -f demo.yaml
另外再写服务的yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: myapp
name: myapp
spec:
ports:
- port: 8088
protocol: TCP
targetPort: 8088
nodePort: 30001
selector:
run: myapp
type: NodePort
status:
loadBalancer: {}
命令导出的yaml 需要手动添加 nodePort 参数,暴露到外部的端口
另外,为了避免与主机其他服务冲突, nodePort 默认范围在30000-32767
然后通过指定yaml 来暴露服务,效果与命令执行一样
minikube expose -f demo_service.yaml
最后通过命令获取url minikube service myapp --url
通过yaml文件可以删除服务和deploy:
minikube delete -f demo_service.yaml
minikube delete -f demo.yaml
原文:https://www.cnblogs.com/hustcpp/p/11226195.html