wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/baremetal/deploy.yaml
vim 编辑deploy.yaml
添加参数
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
再添加
kubectl apply -f deploy.yaml
# cat udp.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: udp-services
namespace: ingress-nginx
data:
53: "kube-system/kube-dns:53"
或者以下方式
修改svc暴露tcp
tee tcp.yaml <<-'EOF'
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.2.0
name: ingress-nginx-controller
namespace: ingress-nginx
annotations:
lb.kubesphere.io/v1alpha1: openelb
protocol.openelb.kubesphere.io/v1alpha1: layer2
eip.openelb.kubesphere.io/v1alpha2: eip-pool
spec:
externalTrafficPolicy: Cluster
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
- name: https
port: 443
protocol: TCP
targetPort: https
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
loadBalancerIP: 172.18.4.14
EOF
修改svc暴露udp
tee udp.yaml <<-'EOF'
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
app.kubernetes.io/version: 1.2.0
name: ingress-nginx-controller-lb
namespace: ingress-nginx
annotations:
lb.kubesphere.io/v1alpha1: openelb
protocol.openelb.kubesphere.io/v1alpha1: layer2
eip.openelb.kubesphere.io/v1alpha2: eip-pool
spec:
externalTrafficPolicy: Cluster
ports:
- name: dns
port: 53
targetPort: 53
protocol: UDP
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
#loadBalancerIP: 172.18.4.14
EOF
客户端配置修改域名IP
# cat /etc/resolv.conf
nameserver 172.18.1.147
测试解析
# nslookup www.qq.com
Server: 172.18.1.147
Address: 172.18.1.147#53
www.qq.com canonical name = ins-r23tsuuf.ias.tencent-cloud.net.
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.201
Name: ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.221
coredns添加一个域名
kubectl edit cm -n kube-system coredns
添加如下
hosts {
172.18.1.148 jsj.jsj.com
fallthrough
}
重启dns生效
kubectl -n kube-system rollout restart deployment coredns
测试使用域名访问服务
tee test-domain.yaml<<-‘EOF’
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-wildcard-host
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/elb.port: '80'
spec:
rules:
- host: "jsj.jsj.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: mygin-v1
port:
number: 80
EOF
客户端修改了dns服务器ip 172.18.1.148,直接可以访问
# while true; do curl jsj.jsj.com/sys; sleep 0.2; done
hosts:mygin-v1-6c57fc598-6nq95
hosts:mygin-v1-6c57fc598-6nq95
hosts:mygin-v1-6c57fc598-x9lgf
hosts:mygin-v1-6c57fc598-x9lgf
hosts:mygin-v1-6c57fc598-dlp2j
hosts:mygin-v1-6c57fc598-6nq95
hosts:mygin-v1-6c57fc598-6nq95