随笔 - 366  文章 - 0  评论 - 101  阅读 - 30万

k8s ingress

https://www.cnblogs.com/hanxing/p/16062860.html

192.168.1.222 k8s-master11 m1

192.168.1.223 k8s-master12 m2
192.168.1.224 k8s-master13 m3
192.168.1.225 k8s-node01 n1
192.168.1.226 k8s-node02 n2
keepalived和haproxy装在n1和n2上,VIP为   192.168.1.123 
 
安装 ingress-controller
docker  pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
各个节点可先pull镜像
[root@k8s-node02 ~]#  docker  pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller
 
 
[root@k8s-master11 ~]# kubectl apply -f ingress-nginx-install.yml
namespace/ingress-nginx created
configmap/nginx-configuration created
configmap/tcp-services created
configmap/udp-services created
serviceaccount/nginx-ingress-serviceaccount created
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created
role.rbac.authorization.k8s.io/nginx-ingress-role created
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created
deployment.apps/nginx-ingress-controller created
1
ingress-nginx-install.yml 如下:

检查  ingress-controller (其实就是个ng)

1
2
3
4
5
[root@k8s-master11 ~]# kubectl get po -A -o wide|grep ingre      
ingress-nginx   nginx-ingress-controller-7995bd9c47-qn277   1/1     Running   0          111m    10.244.3.3      k8s-node01     <none>           <none>
 
[root@k8s-master11 ~]# kubectl get deploy -A|grep  ingress
ingress-nginx   nginx-ingress-controller   1/1     1            1           110m

查 ingress的ng配置

  

 

检查ingress-controller的  svc,是一个NodePort,可用通过外部 31663访问  可编辑看看, kubectl edit svc/ingress-nginx -n ingress-nginx

1
2
3
[root@k8s-master11 ~]# kubectl get svc  -n ingress-nginx -o wide
NAME            TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE   SELECTOR
ingress-nginx   NodePort   10.109.152.173   <none>        80:31663/TCP,443:32333/TCP   65m   app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx

  

  

创建 应用 deploy  svc  ingress
1
2
3
4
[root@k8s-master11 ~]# kubectl apply -f ingress.yml     
deployment.extensions/nginx-deploy created
service/nginx-svc created
ingress.extensions/nginx-ingress created
1
<br>ingress.yml    如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@k8s-master11 ~]# cat ingress.yml  
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx-app
    spec:
      containers:
        - name: nginx-app
          image: wangyanglinux/myapp:v1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:  #匹配deploy的labels
    name: nginx-app
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:
    - host: www.zzx.com
      http:
        paths:
        - path: /
          backend:
            serviceName: nginx-svc     #依赖的svc  metadata:name
            servicePort: 80

  

1
<br><br><br>检查
1
2
3
4
5
6
7
8
9
10
11
[root@k8s-master11 ~]# kubectl get deploy/nginx-deploy -o wide
NAME           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES                   SELECTOR
nginx-deploy   2/2     2            2           6m11s   nginx-app    wangyanglinux/myapp:v1   name=nginx-app
[root@k8s-master11 ~]#
[root@k8s-master11 ~]# kubectl get svc/nginx-svc -o wide                  
NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE    SELECTOR
nginx-svc   ClusterIP   10.102.69.189   <none>        80/TCP    2m5s   name=nginx-app
[root@k8s-master11 ~]#
[root@k8s-master11 ~]# kubectl get ingress/nginx-ingress -o wide            
NAME            HOSTS         ADDRESS   PORTS   AGE
nginx-ingress   www.zzx.com             80      2m16s

 

  

浏览器访问  (C:\Windows\System32\drivers\etc\hosts   添加  192.168.1.223  www.zzx.com)

http://www.zzx.com:31663/  

修改/etc/haproxy/haproxy.cfg 

1
2
3
4
5
6
7
8
9
10
11
12
添加
frontend  nginx
   bind *:80
   mode tcp
   default_backend             nginx_ingress
 
backend nginx_ingress
    balance     roundrobin
    mode tcp
    server  k8s-master11 192.168.1.222:31663 check weight 1 maxconn 2000 check inter 2000 rise 2 fall 3
    server  k8s-master12 192.168.1.223:31663 check weight 1 maxconn 2000 check inter 2000 rise 2 fall 3
    server  k8s-master13 192.168.1.224:31663 check weight 1 maxconn 2000 check inter 2000 rise 2 fall 3

C:\Windows\System32\drivers\etc\hosts   改为 192.168.1.123  www.zzx.com

 http://www.zzx.com:80 

1
<br>验证第二个域名<br><br><br>修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[root@k8s-master11 ~]# cp  ingress.yml   ingress-v2.yml  
 
name lable等添加-v2,image改为v2
 
[root@k8s-master11 ~]# cat  ingress-v2.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deploy-v2
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx-app-v2
    spec:
      containers:
        - name: nginx-app-v2
          image: wangyanglinux/myapp:v2
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc-v2
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:  #匹配deploy的labels
    name: nginx-app-v2
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress-v2
spec:
  rules:
    - host: www.zzx2.com
      http:
        paths:
        - path: /
          backend:
            serviceName: nginx-svc-v2     #依赖的svc  metadata:name
            servicePort: 80

  启动新的v2版deploy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@k8s-master11 ~]# kubectl apply -f ingress-v2.yml
deployment.extensions/nginx-deploy-v2 unchanged
service/nginx-svc-v2 unchanged
ingress.extensions/nginx-ingress-v2 configured
[root@k8s-master11 ~]# ^C
[root@k8s-master11 ~]# ^C
[root@k8s-master11 ~]# ^C
[root@k8s-master11 ~]# kubectl get po                 
NAME                               READY   STATUS    RESTARTS   AGE
nginx-app-646778d676-959hx         1/1     Running   0          5h5m
nginx-app-646778d676-9s5q6         1/1     Running   0          5h5m
nginx-deploy-5dcb69cfcf-bxkpf      1/1     Running   0          3h29m
nginx-deploy-5dcb69cfcf-wwhmp      1/1     Running   0          3h29m
nginx-deploy-v2-5df7f9f88b-hk2z9   1/1     Running   0          59s
nginx-deploy-v2-5df7f9f88b-phbgx   1/1     Running   0          59s
[root@k8s-master11 ~]# kubectl get po -o wide |grep deploy
nginx-deploy-5dcb69cfcf-bxkpf      1/1     Running   0          3h29m   10.244.2.4   k8s-node02     <none>           <none>
nginx-deploy-5dcb69cfcf-wwhmp      1/1     Running   0          3h29m   10.244.3.4   k8s-node01     <none>           <none>
nginx-deploy-v2-5df7f9f88b-hk2z9   1/1     Running   0          84s     10.244.2.5   k8s-node02     <none>           <none>
nginx-deploy-v2-5df7f9f88b-phbgx   1/1     Running   0          84s     10.244.4.2   k8s-master13   <none>           <none>
[root@k8s-master11 ~]# kubectl get svc -o wide    
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE     SELECTOR
kubernetes     ClusterIP   10.96.0.1       <none>        443/TCP   3h26m   <none>
nginx-svc      ClusterIP   10.102.69.189   <none>        80/TCP    3h25m   name=nginx-app
nginx-svc-v2   ClusterIP   10.104.92.9     <none>        80/TCP    92s     name=nginx-app-v2
[root@k8s-master11 ~]# kubectl get ingress -o wide   
NAME               HOSTS          ADDRESS   PORTS   AGE
nginx-ingress      www.zzx.com              80      3h25m
nginx-ingress-v2   www.zzx2.com             80      2m
1
<br>ingress-control的ng配置自动会新增如下

  修改hosts添加  192.168.1.123 www.zzx2.com

浏览器访问http://www.zzx2.com/会指向 v2版的ng

 linux下就用     curl 192.168.1.123:80    -H "Host:www.zzx.com"         curl 192.168.1.123:80    -H "Host:www.zzx2.com"

1
2
3
4
5
[root@k8s-master12 .kube]#    curl 192.168.1.123:80      -H "Host:www.zzx.com"
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
 
[root@k8s-master12 .kube]#      curl 192.168.1.123:80    -H "Host:www.zzx2.com"
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

  

 

ingress path的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[root@k8s-master13 ~]# kubectl get ingress
NAME               HOSTS         ADDRESS   PORTS   AGE
nginx-ingress      www.zzx.com             80      9d
nginx-ingress-v2   www.zzx.com             80      47h
 
[root@k8s-master13 ~]# kubectl get ingress/nginx-ingress  -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"nginx-ingress","namespace":"default"},"spec":{"rules":[{"host":"www.zzx.com","http":{"paths":[{"backend":{"serviceName":"nginx-svc","servicePort":80},"path":"/"}]}}]}}
  creationTimestamp: "2022-03-27T07:58:24Z"
  generation: 5
  name: nginx-ingress
  namespace: default
  resourceVersion: "157685"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/nginx-ingress
  uid: ec81c829-b657-4901-b276-1a6bd6b82944
spec:
  rules:
  - host: www.zzx.com
    http:
      paths:
      - backend:
          serviceName: nginx-svc
          servicePort: 80
        path: /zzx
status:
  loadBalancer: {}
 
 
[root@k8s-master13 ~]# kubectl get ingress/nginx-ingress-v2  -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"nginx-ingress-v2","namespace":"default"},"spec":{"rules":[{"host":"www.zzx.com","http":{"paths":[{"backend":{"serviceName":"nginx-svc-v2","servicePort":80},"path":"/hostname.html/"}]}}]}}
  creationTimestamp: "2022-04-03T10:38:58Z"
  generation: 11
  name: nginx-ingress-v2
  namespace: default
  resourceVersion: "157716"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/nginx-ingress-v2
  uid: 56c57cd0-0b2c-4b93-b263-2cbad168d286
spec:
  rules:
  - host: www.zzx.com
    http:
      paths:
      - backend:
          serviceName: nginx-svc-v2
          servicePort: 80
        path: /yj
status:
  loadBalancer: {}
 
 
curl http://www.zzx.com/yj    会访问 nginx-svc-v2
curl http://www.zzx.com/zzx  会访问 nginx-svc
跟openshift的添加router类似,同一个域名访问不同的deployment

  ng配置

location = /yj {
alias /etc/hosts;
}

 

posted on   寒星12345678999  阅读(89)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2015-03-27 必看
2015-03-27 面试题收集
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示