![](https://img.haomeiwen.com/i19471386/fec0a03dbdb29be2.png)
之前我们提到并配置过ingress-nginx,算是入了门了,那么我们有没有想过,我们之前的ingress-nginx只在一个worker节点上运行的,那么我们如何在多个worker节点上运行,以及如何使用ingress-nginx代理4层协议,如何使用ingress-nginx访问https呢?是不是都需要掌握啊,本文我们就来详细说下。
![](https://img.haomeiwen.com/i19471386/abe1a3ef35ccf9de.png)
1
ingress-nginx部署方式
我们最开始部署的时候,采用的就是daemonset的方式,这里倒是不需要改变了,如果你是从官网,或者其他地方安装的,这里可以修改成daemonset的方式,那么我们如何给每个节点都部署上去呢?先看下现在的状态;
[root@node1 ~]# kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/default-http-backend-86dcdf4845-gfwn8 1/1 Running 3 2d22h
pod/nginx-ingress-controller-7k66x 1/1 Running 0 36m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/default-http-backend ClusterIP 10.233.198.54 <none> 80/TCP 7d2h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/nginx-ingress-controller 1 1 1 1 1 app=ingress 7d2h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/default-http-backend 1/1 1 1 7d2h
NAME DESIRED CURRENT READY AGE
replicaset.apps/default-http-backend-86dcdf4845 1 1 1 7d2h
[root@node1 ~]#
从上面可以看到,我们的nginx-ingress-controller就是daemonset方式,且只有一个节点,我们如何保证每个节点都安装上呢?
可以看到我们这个daemonset上打了一个标签,我们只需要在需要安装ingress-nginx的节点上配置标签,就可以了,我们验证下看看。
[root@node1 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
node2 Ready <none> 30d v1.20.2 app=ingress,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2,kubernetes.io/os=linux,nihao=wohao,yunweijia=True
node3 Ready <none> 30d v1.20.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ceshi2=yunweijia,kubernetes.io/arch=amd64,kubernetes.io/hostname=node3,kubernetes.io/os=linux
[root@node1 ~]#
从上面可以看到node2节点上有标签,app=ingress,所以这个daemonset会在node2上,那么我们给node3也配置个标签试试呢?
[root@node1 ~]# kubectl label node node3 app=ingress
node/node3 labeled
[root@node1 ~]# kubectl get node node3 --show-labels
NAME STATUS ROLES AGE VERSION LABELS
node3 Ready <none> 30d v1.20.2 app=ingress,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ceshi2=yunweijia,kubernetes.io/arch=amd64,kubernetes.io/hostname=node3,kubernetes.io/os=linux
[root@node1 ~]#
这样子就给节点打上了一个app=ingress的标签,我们再看下ingree-nginx的daemonset变化;
[root@node1 ~]# kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/default-http-backend-86dcdf4845-gfwn8 1/1 Running 3 2d22h
pod/nginx-ingress-controller-7k66x 1/1 Running 0 54m
pod/nginx-ingress-controller-bcjf8 1/1 Running 0 7m30s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/default-http-backend ClusterIP 10.233.198.54 <none> 80/TCP 7d2h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/nginx-ingress-controller 2 2 2 2 2 app=ingress 7d2h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/default-http-backend 1/1 1 1 7d2h
NAME DESIRED CURRENT READY AGE
replicaset.apps/default-http-backend-86dcdf4845 1 1 1 7d2h
[root@node1 ~]#
看到数量变成了两个,这样子我们后续扩展就方便多了。
2
配置4层代理
我们看下ingress-nginx自带的configmap文件;
[root@node1 ~]# kubectl get cm -n ingress-nginx
NAME DATA AGE
ingress-controller-leader-nginx 0 7d2h
kube-root-ca.crt 1 7d2h
nginx-configuration 0 7d2h
tcp-services 0 7d2h
udp-services 0 7d2h
[root@node1 ~]#
我们来看下tcp-service的具体内容;
[root@node1 ~]# kubectl get cm -n ingress-nginx tcp-services -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"ingress-nginx","app.kubernetes.io/part-of":"ingress-nginx"},"name":"tcp-services","namespace":"ingress-nginx"}}
creationTimestamp: "2022-04-12T11:50:34Z"
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:app.kubernetes.io/name: {}
f:app.kubernetes.io/part-of: {}
manager: kubectl-client-side-apply
operation: Update
time: "2022-04-12T11:50:34Z"
name: tcp-services
namespace: ingress-nginx
resourceVersion: "469519"
uid: abea366f-9805-4672-81b3-af55a5c922c1
[root@node1 ~]#
然后我们来手工配置一个tcp代理的yaml文件;
剩余内容请转至VX公众号 “运维家” ,回复 “149” 查看。
------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------
linux高级运维工程师运维工程师日常维护运维工程师自动化脚本技术运维工程师培训运维工程师拉船数据中心运维工程师转正申请书光 伏运维工程师面试题运维工程师发展如何linux运维工程师劣势运维工程师的苦逼运维工程师30岁如何发展IT韵运维工程师公安局运维工 程师是编制吗运维工程师都有什么部门华为西安数据中心运维工程师空气质量监测站运维工程师风电运维工程师短期培训苏州恒力集团的运维工程师机器人运维工程师有前途吗山西运维工程师
网友评论