kubernetes资源——ingress
一、ingress介绍
1、作用
ingress作为插件存在,需要单独安装
ingress作用:发布服务
ingress以主机名的方式对外发布服务, 一个服务对应一个主机名, 类似于7层调度
2、实现方式
nginx_ingress
haproxy_ingress
3、核心组件
ingress_nginx_controller控制器
与kube-apiserver进行交互,获取集群内部的服务信息
生成ingress规则发布服务 、规则维护
二、部署ingress
1、下载ingress_1.9.6.yaml文件
将ingress controller的网络改为host
删除所有镜像后的sha值
2、事先导入镜像
[root@k8s-master ~]# ctr -n k8s.io image import k8s.dockerproxy.com_ingress_nginx_controller_v1.9.6.tar
[root@k8s-master ~]# ctr -n k8s.io image import k8s.dockerproxy.com_ingress_nginx_kube_webhook_certgen_v20231226_1a7112e06.tar
3、部署ingress
[root@k8s-master ~]# kubectl create -f ingress_1.9.6.yaml
[root@k8s-master ~]# kubectl get pod -n ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-admission-create-dpd4b 0/1 Completed 0 100s 10.88.242.132 k8s-node02.linux.com <none> <none>
ingress-nginx-admission-patch-9mskg 0/1 Completed 1 100s 10.88.242.131 k8s-node02.linux.com <none> <none>
ingress-nginx-controller-584949497f-22vfp 1/1 Running 0 100s 192.168.140.12 k8s-node02.linux.com <none> <none>
三、通过ingress发布k8s中的服务
1、创建服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: test3-tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: test3-tomcat
image: tomcat:latest
imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
name: test3-tomcat
spec:
ports:
- port: 8080
selector:
app: tomcat
[root@k8s-master svcTest]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/test3-tomcat-78cb46587d-rkj8c 1/1 Running 0 6s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 123d
service/test3-tomcat ClusterIP 10.96.104.153 <none> 8080/TCP 6s
2、创建ingress规则发布服务
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test3-tomcat-ingress
spec:
ingressClassName: nginx
rules:
- host: java.linux.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: test3-tomcat
port:
number: 8080
[root@k8s-master svcTest]# kubectl create -f test3-tomcat-ingress.yaml
ingress.networking.k8s.io/test3-tomcat-ingress created
[root@k8s-master svcTest]# kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
test3-tomcat-ingress nginx java.linux.com 80 6s
3、测试访问
将主机名解析到ingress controller地址
[root@k8s-master svcTest]# kubectl cp project.war test3-tomcat-78cb46587d-rkj8c:/usr/local/tomcat/webapps/project.war