在mac下跑一个Ingress的例子
Ingress是什么
在Kubernetes中,Ingress是一个对象,该对象允许从Kubernetes集群外部访问Kubernetes服务。 您可以 通过创建一组规则来配置访问权限,这些规则定义了哪些入站连接可以访问哪些服务。
这里有篇文章很好的说明了Ingress,并给出了例子 —— Kubernetes Ingress with Nginx Example
但是要想跑一下,首先要有一个k8s集群。下面首先在mac上安装一个k8s集群。
在mac上安装k8s集群
我的mbp的配置是8G内存。
- 下载
Docker.dmg
。 - 从这里下载搭建k8s所需要的镜像——
https://github.com/gotok8s/k8s-docker-desktop-for-mac
使用的方法就是如下,我用的docker desktop的kubernates的版本是1.19.3所以,相应的要把文件images
中的版本号进行修改,以匹配。1
2
3
4
5
6
7
8
9
10
11$ git clone https://github.com/gotok8s/k8s-docker-desktop-for-mac.git
$ cd k8s-docker-desktop-for-mac
$ cat images
k8s.gcr.io/kube-proxy:v1.19.3=gotok8s/kube-proxy:v1.19.3
k8s.gcr.io/kube-controller-manager:v1.19.3=gotok8s/kube-controller-manager:v1.19.3
k8s.gcr.io/kube-scheduler:v1.19.3=gotok8s/kube-scheduler:v1.19.3
k8s.gcr.io/kube-apiserver:v1.19.3=gotok8s/kube-apiserver:v1.19.3
k8s.gcr.io/coredns:1.7.0=gotok8s/coredns:1.7.0
k8s.gcr.io/pause:3.2=gotok8s/pause:3.2
k8s.gcr.io/etcd:3.4.13-0=gotok8s/etcd:3.4.13-0
$ ./load_images.sh - 启动docker desktop,并在dashboard中修改docker使用的资源大小。我分配了5G, 交换内存设置为4G,cpu数量为3
- 勾选
Enable Kubernetes
和Show system containers (advanced)
,启动,然后耐心等待。
需要等待的时间比较长,因为还会下载多个镜像,如docker/desktop-kubernetes
等等。
安装ingress-nginx-controller
我们从ingress-nginx的官网可以看到不同的安装方式,对于 Docker for Mac,一行命令搞定
1 | kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml |
这个需要下载镜像quay.io/kubernetes-ingress-controller/nginx-ingress-controller
,所以也需要时间。直到看到如下pods
1 | ingress-nginx ingress-nginx-admission-create-frllm 0/1 Completed 0 56m |
跑一个Ingress的例子
Kubernetes Ingress with Nginx Example中的yaml文件需要外网才能看到。
我在此列出三个yaml文件
apple.yaml:
1 | kind: Pod |
banana.yaml :
1 | kind: Pod |
ingress.yaml:
1 | apiVersion: extensions/v1beta1 |
执行命令,等待一下。因为要下载一个镜像“jettech/kube-webhook-certgen”
1 | $ kubectl apply -f apple.yaml |
查看ingress
1 | $ kubectl describe ingress -n default example-ingress |
最后测试
1 |
|