在Win10上使用minikube体验K8S

公司给配的工作机器是Win10电脑,闲来无事想体验一下K8S的魔力,到处搜了攻略文章最终成功,记录一下过程和中间遇到的问题。

目标

  • Win10上使用minikube搭建K8S单机环境。
  • 使用K8S部署镜像,这里使用docker hub上现成的demo镜像。

前置条件

本地安装K8S集群

  • 官方提供了minikube工具来给我们在本地单机方式体验K8S集群,本次体验就是基于minikube实现。

安装minikube

  • 官网下载,安装,之前开启好hyper-v就没啥特别的问题。https://kubernetes.io/docs/tasks/tools/install-minikube/
  • 安装完后打开powershell命令窗口,执行minikube,成功的话会打印出命令提示信息:
    image.png
  • minikube和其他常用命令一样,可以通过--help查看具体指令的帮助说明,没事可以多看看。
  • 常用命令:
    • minikube start:创建并启动K8S集群,第一次启动需要从网上拉取各种镜像文件。
    • minikube stop:停止K8S集群。
    • minikube delete:删除之前创建好的集群。

Win10创建虚拟交换机

  • 在开始菜单中搜索并打开Hyper-V管理器,创建一个外部虚拟交换机:
    image.png

    image.png

    image.png
  • 名称我们写成minikubeSwitch,后续会用到。

启动minikube

  • 上面的准备好了,我们可以尝试启动K8S集群了。
  • 用管理员权限打开powershell命令行,否则会无法创建虚拟器。
  • 在C盘下(否则会找不到某些文件)执行minikube命令和参数:
minikube.exe start  --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="minikubeSwitch" --image-mirror-country="cn" 
  • 参数含义:
    • vm-driver="hyperv":指定虚拟技术为hyper-v,还可以使用virtual-box。如果是linux系统可以不指定此参数。
    • memory=4096:看名字就知道,分配4G内存给K8S集群。
    • hyperv-virtual-switch="minikubeSwitch":指定前面创建的虚拟交换机。
    • image-mirror-country="cn":众所周知的原因,中国大陆无法访问某些网站,导致必要的镜像无法下载,例如网上常见的k8s.gcr.io镜像无法下载问题。K8S官方深知我国国情,通过这个参数minikube会自动换成aliyundocker hub,真是很体贴。
  • 等待运行完成,看到机器内存使用飙高,执行minikube status查看集群是否运行成功。
    image.png

配置minikube,设置docker仓库为本地

  • 正常使用K8S时,镜像是要从远程仓库上拉取到的。minikube可以通过docker-env命令让K8S使用本地机器的docker仓库,方便我们测试。
  • powershell命令行中执行:
& minikube docker-env | Invoke-Expression

安装K8S控制工具

  • K8S集群启动好了,我们需要安装kubectl这个命令来操作它,执行minikube kubectl便会自动安装到powershell命令环境中。
  • 运行minikube dashboard,会自动安装并运行K8Sdashboard界面,方便管理操作集群。
    image.png

发布镜像

  • K8S准备好了,下一步可以开始部署程序镜像了。

准备镜像

  • 这里我不自己创建新镜像,用网上现成的demo镜像拉取到本地,假装是我自己打包的docker
  • https://hub.docker.com/r/kennship/http-echo这是一个简单的nodejs代码,它接收一个请求,返回请求信息。
  • docker hub拉取echo镜像至本地:
    docker pull kennship/http-echo

编写Deploy文件

  • K8S中每个镜像运行的环境名称为POD,我们需要编写一个deploy.yaml文件描述POD,包含依赖的API版本,名称,部署镜像等元数据信息:
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo-deployment
  labels:
    app: echo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      containers:
      - name: koly-echo
        image: kennship/http-echo
        ports:
        - containerPort: 3000
  • spec.template.spec.containers.image:指定POD部署哪个镜像,目标的minikube会从宿主机docker获取镜像文件。
  • spec.template.spec.containers.ports:containerPort:指定POD使用哪个端运行程序。

用K8S部署POD

  • 使用kubectl apply -f .\deploy.yaml部署POD:
    image.png
  • 使用kubectl get pods查看POD运行情况:
    image.png
  • Running表示镜像已经正常运行。

启动Service访问已部署的POD资源

  • POD运行在K8S虚拟化集群中,需要利用Service来访问它。同样的,需要编写一个service.yaml来描述如何访问POD资源:
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: echo-service
spec:
  selector:
    app: echo
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3000
    nodePort: 30080
  • spec.ports.targetPort:与deploy的containerPort一致。
  • spec.ports.nodePort:表示将minikube创建的机器的端口跟service的port映射了起来,而service的port又跟pod的port映射了起来。
  • 有了service.yaml,使用kubectl apply -f service.yaml运行service:
    image.png

获得运行程序的访问地址

  • 使用minikube service echo-service --url命令获得程序访问地址:
    image.png
  • 打开命令行中返回的URL,就能正常访问到用K8S部署的镜像程序了:
    image.png

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容