1. traefik部署

yaml文件见本GitHub

kubectl apply -f traefik-crd.yaml
kubectl apply -f crd.yaml
kubectl apply -f rbac.yaml -n kube-system
kubectl apply -f config.yaml -n kube-system
kubectl apply -f deploy.yaml -n kube-system
kubectl apply -f dashboard-route.yaml -n kube-system

2. ingress nginx

2.1. 部署

Ingress Github官网
部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml

2.2. 宿主机网络暴露

deployment .spec.template.spec.hostNetwork: true# 使用宿主机网络,端口暴露在宿主机上

  • 每个node需要启动一个ingress-controller?
  • 每个node都会占用80和443端口?

hostNetwork类型的pod也存在多方面的缺点:

  • 假如pod重建,pod可能会调度到其他node上,这个时候pod的ip就改变了,那么客户端的配置很可能需要更改
  • 因为与宿主机共享网络协议栈,所以需要考虑端口冲突的问题。如果hostNetwork类型的pod太多,端口冲突将会非常常见,运维成本也会变高
  • 不能使用HostAliases特性,因为Kubelet只管理非hostNetwork类型Pod的hosts文件

2.3. 使用service的nodeport方式

如下面Jenkins的service配置所示:

apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  selector:
    name: jenkins
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 8080
      protocol: TCP
      nodePort: 30006
    - name: agent
      port: 50000
      protocol: TCP
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐