如果使用kubectl get po -n kube-system | grep ingress
命令没有查询到任何信息,则说明当前k3s集群中未安装任何Ingress控制器。可以通过以下步骤安装Traefik作为Ingress控制器:
- 创建Traefik Deployment和Service对象
执行以下命令创建Traefik Deployment和Service对象:
kubectl apply -f https://raw.githubusercontent.com/rancher/k3s/master/contrib/traefik/2.4/latest/deploy.yaml
- 验证Traefik是否运行成功
执行以下命令查看Traefik是否已经运行成功:
kubectl get po -n kube-system -l "app.kubernetes.io/name=traefik"
如果输出结果中有一个以”traefik-“开头的Pod处于Running状态,则说明Traefik已经正常运行。
- 部署应用并配置Ingress规则
接下来可以部署应用并配置Ingress规则,例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3 # 副本数为3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: http,https
spec:
rules:
- host: example.com # 域名或IP地址
http:
paths:
- path: /nginx
backend:
serviceName: nginx-service # Service的名称
servicePort: 80 # Service的端口
这个例子中,我们部署了一个nginx应用,并使用Traefik作为Ingress控制器将example.com/nginx
路径下的请求转发到nginx应用的Service上。
- 验证访问
如果你是在本地运行k3s,则可以在hosts文件中添加如下一行:
127.0.0.1 example.com
然后就可以在浏览器中输入http://example.com/nginx来访问nginx应用了。如果你是在云上运行k3s,则需要通过配置域名解析来进行访问。