k8s部署-42-带你深入学习ingress-nginx(上)

图片

之前我们提到并配置过ingress-nginx,算是入了门了,那么我们有没有想过,我们之前的ingress-nginx只在一个worker节点上运行的,那么我们如何在多个worker节点上运行,以及如何使用ingress-nginx代理4层协议,如何使用ingress-nginx访问https呢?是不是都需要掌握啊,本文我们就来详细说下。

图片

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韵运维工程师公安局运维工 程师是编制吗运维工程师都有什么部门华为西安数据中心运维工程师空气质量监测站运维工程师风电运维工程师短期培训苏州恒力集团的运维工程师机器人运维工程师有前途吗山西运维工程师

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值