Github开源生信云平台 DEMO
在 Kubernetes 中安装 Flannel 后安装 Traefik 没有冲突。Flannel 负责 Pod 网络(CNI),Traefik 负责 Ingress 流量入口,二者职责不同:
helm template traefik traefik/traefik \ -n traefik \ --set image.repository=registry.cn-hangzhou.aliyuncs.com/wybioinfo/traefik \ --set image.tag=v3.7.6
helm upgrade traefik traefik/traefik \ -n traefik \ --set image.repository=registry.cn-hangzhou.aliyuncs.com/wybioinfo/traefik \ --set image.tag=v3.7.6
kubectl get all -n traefik
外部请求 | v NodeIP:80/443 | Traefik Pod | Kubernetes Service | 应用 Pod | Flannel 网络
下面以 kubeadm + Flannel 集群为例。
先确认节点 Ready:
kubectl get nodes
应该:
NAME STATUS ROLES master Ready control-plane worker1 Ready
确认 Flannel:
kubectl get pods -A | grep flannel
例如:
kube-flannel kube-flannel-ds-xxxxx Running
检查:
helm version
没有则安装:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm repo add traefik https://traefik.github.io/charts
更新:
helm repo update
kubectl create namespace traefik
最简单:
helm install traefik traefik/traefik \ --namespace traefik
等待:
kubectl get pods -n traefik
正常:
NAME READY traefik-xxxxx 1/1 Running
kubectl get svc -n traefik
默认:
NAME TYPE traefik LoadBalancer
在裸机 kubeadm 环境通常:
EXTERNAL-IP <pending>
因为没有云 LoadBalancer。
修改:
helm upgrade traefik traefik/traefik \ -n traefik \ --set service.type=NodePort
查看:
80:30080/TCP 443:30443/TCP
访问:
http://NodeIP:30080
让 Traefik 直接监听节点 80/443:
创建:
traefik-values.yaml
deployment: hostNetwork: true service: type: ClusterIP ports: web: port: 80 expose: default: true websecure: port: 443 expose: default: true
安装:
helm upgrade --install traefik \ traefik/traefik \ -n traefik \ -f traefik-values.yaml
此时:
Node:80 | v Traefik Pod
部署 nginx:
kubectl create deployment nginx \ --image=nginx
创建 Service:
kubectl expose deployment nginx \ --port=80
创建 ingress:
nginx-ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx spec: ingressClassName: traefik rules: - host: nginx.local http: paths: - path: / pathType: Prefix backend: service: name: nginx port: number: 80
应用:
kubectl apply -f nginx-ingress.yaml
kubectl get ingress
本机测试:
修改 /etc/hosts
/etc/hosts
加入:
192.168.3.60 nginx.local
http://nginx.local
应该看到 nginx 页面。
kubectl get ingressclass
NAME CONTROLLER traefik traefik.io/ingress-controller
查看 Traefik 日志:
kubectl logs -n traefik deploy/traefik
Configuration received Starting provider KubernetesIngress
你的环境之前是:
建议:
Flannel | | Traefik (hostNetwork) | Ingress | 你的 App/RStudio/FastAPI
安装方式:
helm upgrade --install traefik traefik/traefik \ -n traefik \ --create-namespace \ --set deployment.hostNetwork=true
这样后续给你的 BRAVE 平台部署 RStudio、FastAPI、React 等服务时,可以直接通过 Ingress 路由。