目录
k8s七层代理实现方案
- trafik
- envoy
- nginx
部署安装ingress-nginx
部署ingress-Controller
mkdir nginx-ingresscd nginx-ingresswget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.25.1/deploy/static/mandatory.yamlkubectl apply -f mandatory.yamlkubectl get nskubectl get pod -n ingress-nginx
部署ingress-service(nodeport方式)
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml
cat service-nodeport.yamlapiVersion: v1kind: Servicemetadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginxspec: type: NodePort ports: - name: http port: 80 targetPort: 80 nodePort: 30080 #指定了nodeport, 好处便于记忆, 坏处可能会端口冲突 protocol: TCP - name: https port: 443 targetPort: 443 nodePort: 30443 #指定了nodeport, 好处便于记忆, 坏处可能会端口冲突 protocol: TCP selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx
kubectl apply -f service-nodeport.yamlkubectl get pod -n ingress-nginxkubectl get svc -n ingress-nginx
ingress实验
一. myapp
创建deployment以及对应的service
apiVersion: v1kind: Servicemetadata: name: myapp namespace: defaultspec: selector: app: myapp release: canary ports: - name: http targetPort: 80 port: 80---apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deploy namespace: defaultspec: replicas: 2 selector: matchLabels: app: myapp release: canary template: metadata: labels: app: myapp release: canary spec: containers: - name: myapp image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80
创建对应service的ingress规则
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: ingress-myapp namespace: default annotations: kubernetes.io/ingress.class: "nginx"spec: rules: - host: myapp.magedu.com http: paths: - path: backend: serviceName: myapp servicePort: 80
二. tomcat
拉取镜像
docker pull tomcat:8.5.32-jre8-alpine
创建deployment以及对应的service
apiVersion: v1kind: Servicemetadata: name: tomcat namespace: defaultspec: selector: app: tomcat release: canary ports: - name: http targetPort: 8080 port: 8080 - name: ajp targetPort: 8009 port: 8009---apiVersion: apps/v1kind: Deploymentmetadata: name: tomcat-deploy namespace: defaultspec: replicas: 2 selector: matchLabels: app: tomcat release: canary template: metadata: labels: app: tomcat release: canary spec: containers: - name: tomcat image: tomcat:8.5.32-jre8-alpine ports: - name: http containerPort: 8080 - name: ajp containerPort: 8009
创建对应service的ingress规则
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: ingress-tomcat namespace: default annotations: kubernetes.io/ingress.class: "nginx"spec: rules: - host: tomcat.magedu.com http: paths: - path: backend: serviceName: tomcat servicePort: 8080