k8s miniKube 入门

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值