本地搭建K8s环境,并配置Ingress代理
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地搭建K8s环境,并配置Ingress代理相关的知识,希望对你有一定的参考价值。
书接上文,上回说到了在Linux系统搭建K8s环境,通过脚本一键处理,具体可参考《入门K8s:一键脚本搭建Linux服务器集群》。
虽然Linux系统很不错,而且也推荐都买一个做练习,但是不可避免的会遇到一些小问题,比如:
1、开发阶段,频繁生成镜像,用来测试;
2、局域网内多台电脑快速实现集群操作;
3、暂时不想买服务器;
那我们就在本地Windows系统中,快速的部署一个K8s集群,用来短时间的看到效果和测试用例,还是方便很多的,不过如果想要好好研究的话,还是要搞一个Linux服务器,从头慢慢的搭建吧。
PS:如果想要在本地搭建环境,只有一个要求,电脑内存尽量在18G以上,我的电脑是32G。
Part 1
安装Docker Desktop
如果你之前安装过,现在K8s不能用了,或者之前本地都没有安装过,那可以从官网下载,然后直接安装即可,过程很简单,一直Next就行。
有一点需要注意就是要看好对应的版本,因为后边涉及到版本的问题。
https://www.docker.com/products/docker-desktop
安装完成,双击图标,打开桌面程序,就可以看到左下角有一个绿色的鲸鱼标识,注意,这个时候只有一个:
中间的打马赛克的默认也是没有的,这是我已经安装好的。
安装好Docker服务以后,K8s默认是关闭状态的,需要我们手动打开:
请注意!
这个时候不要轻易的打开它,除非你有VPN,且网速比较好。
因为开启K8s,主要是启动对应的服务,大概有七八个服务,镜像是很麻烦的,特别是没有配置本地加速的情况下(加速可以用阿里云或者中科大的地址,百度即可)。所以需要从远程仓库把镜像拉下来,过程很慢,即便我用VPN了,也一个小时未成功,无奈只能重装,换了第二种方案。
Part 2
安装K8s服务
上边直接手动启动的方式已经放弃,换成了阿里的本地镜像:
https://github.com/AliyunContainerService/k8s-for-docker-desktop
直接clone代码,切换到当前Docker Desktop对应版本的分支,然后根据他们的README操作即可,比较简单,镜像拉取完成后,就可以看到多了一些镜像:
请好好对照下镜像,如果少了,就手动拉取,不然是启动不了K8s的,这里有一个坑,阿里仓库给的ingress的版本比较低,是0.26.1的,这个版本有bug,建议用官方最新的1.0版本:
相应的v1.0版本的ingress的yml文件可以直接从官方GitHub中找到:
https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/deploy.yaml
只要保证上边的镜像都有了,就可以开启K8s了!
过程可能会持续1~3分钟,但是肯定不会很长,要是时间超过20分钟,那就只能重新搞了。
假设你已经弄好了,K8s也启动了,如何查看效果呢,比如节点信息,Pod信息,service信息等,平时使用最多的就是开启admin看板,查看所有的信息,不过操作不便,还需要登录,这里安利一个工具,比admin更方便——Lens。
Part 3
用Lens连接集群
去Lens官网下载并安装:
https://github.com/lensapp/lens
安装完成后,配置上下文,开启连接:
过程很简单,功能很丰富。
安装完成软件,来一个完整的前端的ingress部署吧。
Part 4
部署一个完整的VUE项目
过程其实很简单,就是准备好一个镜像,然后部署deployment、pod、service、ingress,直接来yml吧,有问题一起讨论:
apiVersion: apps/v1
kind: Deployment
metadata:
name: blog-h5
namespace: default
labels:
app: blog-h5
spec:
replicas: 1
selector:
matchLabels:
app: blog-h5 # has to match .spec.template.metadata.labels
template:
metadata:
labels:
app: blog-h5 # has to match .spec.selector.matchLabels
spec:
containers:
- name: blog-h5
image: blog.core
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: blog-h5
---
apiVersion: v1
kind: Service
metadata:
name: blog-h5
namespace: default
labels:
app: blog-h5
spec:
ports:
- port: 80
targetPort: 80
name: blog-h5
selector:
app: blog-h5
---
#ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: blog-h5-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: h5.cxt.ycsure.com
http:
paths:
- backend:
service:
name: blog-h5
port:
number: 80
path: /
pathType: Prefix
以上是关于本地搭建K8s环境,并配置Ingress代理的主要内容,如果未能解决你的问题,请参考以下文章
k8s ingress实现http/https7层和tcp四层代理
K8S(Rancher)Ingress 规则 - Nginx 反向代理重定向