K8S之Ingress部署

资料信息地址:

Ingress-Nginx-github 地址:https://github.com/kubernetes/ingress-nginx

Ingress-Nginx 官方地址:https://kubernetes.github.io/ingress-nginx

一、下载并修改配置文件

# 创建文件夹
[root@master ~]# mkdir ingree-controller
[root@master ~]# cd ingree-controller/

# 获取Ingress-nginx,本次案例使用的是0.3版本
[root@master ingree-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
[root@master ingree-controller]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

# 修改 mandatory.yaml 文件中的仓库地址,若七牛地址不行则改为阿里云镜像地址
#     修改quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
#     七牛云地址:quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
#     阿里云地址:registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.30.0
# 创建Ingress-nginx
[root@master ingree-controller]# vi mandatory.yaml 

 

二、运行 Ingress 配置文件

# 1、修改并运行配置文件
[root@k8s-master ingress]# vi mandatory.yaml [root@k8s-master ingress]# kubectl apply -f mandatory.yaml namespace/ingress-nginx created deployment.extensions/default-http-backend created service/default-http-backend 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.extensions/nginx-ingress-controller created
# 2、查看运行结果

[root@master ingree-controller]# kubectl get pods -n ingress-nginx
NAME                      READY    STATUS   RESTARTS    AGE
nginx-ingress-controller-fbf967dd5-dp5gj 1/1    Running   0        29s


# 查看Service
[root@master ingree-controller]# kubectl get svc -n ingress-nginx
NAME        TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)              AGE
ingress-nginx  NodePort    10.100.202.188   <none>    80:32188/TCP,443:31107/TCP    45s

 

三、书写并运行 Service 服务

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat-pod
  template:
    metadata:
      labels:
        app: tomcat-pod
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5-jre10-slim
        ports:
        - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: dev
spec:
  selector:
    app: nginx-pod
  clusterIP: None    # service的ip地址,如果不写,默认会合成一个 
  type:    ClusterIP
  ports:
    - port: 80            # service端口
      targetPort: 80    # pod端口

---      
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  namespace: dev
spec:
  selector:
    app: tomcat-pod
  clusterIP: None    # service的ip地址,如果不写,默认会合成一个 
  type:    ClusterIP
  ports:
    - port: 8080            # service端口
      targetPort: 8080    # pod端口

查看结果

# 创建
[root@master ingree-controller]# kubectl apply -f tomcat-nginx.yaml 
deployment.apps/nginx-deployment created
deployment.apps/tomcat-deployment created
service/nginx-service created
service/tomcat-service created


# 查看
[root@master ingree-controller]# kubectl get svc -n dev
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
nginx-service    ClusterIP   None         <none>        80/TCP     28s
tomcat-service   ClusterIP   None         <none>        8080/TCP   28s

四、ingree-http代理

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-http
  namespace: dev
spec:
  rules:
  - host: nginx.wangzy.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 80
  - host: tomcat.wangzy.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-service
          servicePort: 8080
# 创建
[root@master ingree-controller]# kubectl apply -f ingress-http.yaml 
ingress.extensions/ingress-http created
[root@master ingree-controller]# 
# 查看(ing为ingress的简写)
[root@master ingree-controller]# kubectl get ing -n dev
NAME           HOSTS                                ADDRESS   PORTS   AGE
ingress-http   nginx.wangzy.com,tomcat.wangzy.com             80      13s

 

 

四、访问测试页面

## 方式一:不添加域名访问
curl -v http://192.168.141.160 -H 'host: nginx.wangzy.com'



## 方式二:windows本地域名配置 # 打开hosts配置文件,文件目录:C:\Windows\System32\drivers\etc # 添加解析内容
192.168.101.26 nginx.wangzy.com 192.168.101.26 tomcat.wangzy.com # 查看ingress暴露端口 [root@master ingree-controller]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx NodePort 10.100.202.188 <none> 80:32188/TCP,443:31107/TCP 24h # 访问nginx地址 http://nginx.wangzy.com:32188

 

 

 

 

 

 

 

 

posted on 2020-12-03 11:51  wangzy-Zj  阅读(3631)  评论(2编辑  收藏  举报