这是我自己的主机名
cat /etc/hosts
192.168.1.161 master
192.168.1.162 node01
192.168.1.163 node02
1、安装ingress-nginx
需要下载mandatory.yaml文件,由于文件内容太长,放到这里了下载
[root@master ingress-nginx]# kubectl apply -f mandatory.yaml
namespace/ingress-nginx created
configmap/nginx-configuration created
configmap/tcp-services created
configmap/udp-services created
serviceaccount/nginx-ingress-serviceaccount created
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created
role.rbac.authorization.k8s.io/nginx-ingress-role created
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created
deployment.apps/nginx-ingress-controller created
limitrange/ingress-nginx created
2、部署ingress-nginx service
下面是service-nodeport文件的内容,也可以在这里下载
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
nodePort: 32080 #http
- name: https
port: 443
targetPort: 443
protocol: TCP
nodePort: 32443 #https
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
注册
[root@master ingress-nginx]# kubectl apply -f service-nodeport.yaml
service/ingress-nginx created
[root@master ingress-nginx]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.97.144.99 <none> 80:32080/TCP,443:32443/TCP 134m
3、部署ingress
[root@master ingress-nginx]# vi ingress-myapp.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myapp #ingress的名称
namespace: default #所属名称空间
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules: #定义后端转发的规则
- host: www2.swx.com #通过域名进行转发
http:
paths:
- path:
backend: #配置后端服务
serviceName: myapp
servicePort: 80
[root@master ingress-nginx]# kubectl apply -f ingress-myapp.yaml
[root@master ingress-nginx]# kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress-myapp <none> www2.swx.com 10.97.144.99 80 42m
4、修改本地host文件,进行访问
host文件路径在 C:\Windows\System32\drivers\etc
增加域名
192.168.1.161 www1.swx.com
192.168.1.161 www2.swx.com
5、配置tomcat测试
[root@master ingress-nginx]# vi tomcat-demo.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat
namespace: default
spec:
selector:
app: tomcat
release: canary
ports:
- name: http
targetPort: 8080
port: 8080
- name: ajp
targetPort: 8009
port: 8009
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deploy
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: tomcat
release: canary
template:
metadata:
labels:
app: tomcat
release: canary
spec:
containers:
- name: tomcat
image: tomcat:7-alpine
ports:
- name: http
containerPort: 8080
name: ajp
containerPort: 8009
[root@master ingress-nginx]# kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-backend-pod-58b7f5cf77-4djv8 1/1 Running 0 154m
myapp-backend-pod-58b7f5cf77-frnwg 1/1 Running 0 154m
myapp-backend-pod-58b7f5cf77-rft5k 1/1 Running 0 154m
[root@master ingress-nginx]# vi ingress-tomcat.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: tomcat
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: tomcat.magedu.com
http:
paths:
- path:
backend:
serviceName: tomcat
servicePort: 8080
[root@master ingress-nginx]# kubectl apply -f ingress-tomcat.yaml
ingress.extensions/tomcat created
测试访问,host文件需要新增tomcat.com域名