kubernetes资源——ingress
- 一、ingress介绍
- 1、作用
- 2、实现方式
- 3、核心组件
- 二、部署ingress
- 1、下载ingress_1.9.6.yaml文件
- 2、事先导入镜像
- 3、部署ingress
- 三、通过ingress发布k8s中的服务
- 1、创建服务
- 2、创建ingress规则发布服务
- 3、测试访问
一、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: 1selector:matchLabels:app: tomcattemplate:metadata:labels:app: tomcatspec:containers:- name: test3-tomcatimage: tomcat:latestimagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:name: test3-tomcat
spec:ports:- port: 8080selector:app: tomcat
[root@k8s-master svcTest]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/test3-tomcat-78cb46587d-rkj8c 1/1 Running 0 6sNAME 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: nginxrules:- host: java.linux.comhttp:paths:- pathType: Prefixpath: "/"backend:service:name: test3-tomcatport: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