k8s miniKube 入门
k8s miniKube 入门miniKube 是单机版kubernetes, 可以配置运行在同一台主机上的服务和pod,并使用docker作为虚拟化工具安装:见上篇文章1.启动:minikube 支持多种虚拟化工具,如:virtualbox, 不过在linux里可以支持dockerminikube start --vm-driver=none等待一会最终输出 * Done! kubectl is
k8s miniKube 入门
miniKube 是单机版kubernetes, 可以配置运行在同一台主机上的服务和pod,并使用docker作为虚拟化工具
安装:https://blog.csdn.net/sunrj_niu/article/details/121147587
1.启动:minikube 支持多种虚拟化工具,如:virtualbox, 不过在linux里可以支持docker
minikube start --vm-driver=none
等待一会最终输出 * Done! kubectl is now configured to use “minikube”
2.然后创建一个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
3.再将deployment 暴露成服务
kubectl expose deployment hello-minikube --type=NodePort
输出:service/hello-minikube exposed
4.最后获取访问url
minikube service hello-minikube --url
输出访问url:http:😕/xxxxx:port
通过url可以访问服务资源
删除服务资源
先删除服务: minikube delete service hello-minikube
再删除deployment: minikube delete deployment hello-minikube
最后删除minikube集群 minikube stop && minikube delete
如何快速编写YAML文件
一般来说,我们很少自己手写YAML文件,因为这里面涉及到了很多内容,我们一般都会借助工具来创建
方法1:使用kubectl create命令生成yaml文件
这种方式一般用于资源没有部署的时候,我们可以直接创建一个YAML配置文件
# 尝试运行,并不会真正的创建镜像
kubectl create deployment web --image=nginx -o yaml --dry-run
资源名字叫web
或者我们可以输出到一个文件中
# 输出到文件中
kubectl create deployment web --image=nginx -o yaml --dry-run > hello.yaml
-o yaml指定我们的yaml文件
--dry-run 不在k8s中执行
>重定向到我们的文件中
然后我们就在文件中直接修改即可
vim hello.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
这是新创建一条yaml文件,
使用kubectl get命令导出yaml文件
可以首先查看一个目前已经部署的镜像
kubectl get deploy
方法2:我们也可以根据我们的原有的pod来生成yaml,或者修改
kubectl get pod
kubectl get deploy
kubectl get deploy nginx -o yaml --export > my-deploy2.yaml
-o yaml:指定yaml文件
--export:输出
vim my-deploy2.yaml
演示运行一个实例:
1、创建并启动 minikube 虚拟机
$ minikube start
Starting local Kubernetes cluster...
Running pre-create checks...
Creating machine...
Starting local Kubernetes cluster...
2、创建 hello-minikube 部署
$ kubectl run hello-minikube --image=tomcat:8.0 --port=8080
deployment "hello-minikube" created
3、发布服务 hello-minikube
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
4、查看 pods
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-598805112-3bzmf 1/1 ContainerCreating 0 5s
注意:刚开始时,pod 没有完全创建好的时候,状态是 ContainerCreating,当部署完成后,状态就变成 Running。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-598805112-3bzmf 1/1 Running 0 25s
5、获取服务地址
$ minikube service hello-minikube --url
http://192.168.99.102:30724
$ minikube service hello-minikube 将直接打开地址到默认浏览器上。
6、停止 minikube 虚拟机
$ minikube stop
Stopping local Kubernetes cluster...
Stopping "minikube"...
问题1:执行完毕上边 2 和 3 步骤后,发现 hello-minikube 服务并没有成功启动。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-598805112-3bzmf 0/1 ContainerCreating 0 15s
发现 hello-minikube 的状态一直是 ContainerCreating,并且 READY 为 0/1,通过 minikube logs 查看日志可以看出,有一个镜像 gcr.io/google_containers/pause-amd64:3.0 显示拉取失败,分析原因应该是 gcr.io 这个地址被墙了。
# 替换镜像
$ docker pull visenzek8s/pause-amd64:3.0
$ docker tag visenzek8s/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
# 显式设置拉取策略为 IfNotPresent
$ kubectl run hello-minikube --image=tomcat:8.0 --port=8080 --image-pull-policy=IfNotPresent
更多推荐
所有评论(0)