Ingress-nginx部署之hostNetwork

1:环境

Kubernetes 1.24
Ingress-nginx 1.2

2:拉取原始yaml文件并修改

[root@kubernetes-master-1 ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml

# 修改三点即可
1:修改Deployment为 DaemonSet
2:如果有replicas就删除
3:在Deployment资源下的containers上方添加 hostNetwork: true
    spec:
      hostNetwork: true
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - args:
        - /nginx-ingress-controller
4:使用nodeselector选择部署在哪儿(我这里选择部署在node节点上)

# 这样就可以直接部署了
[root@kubernetes-master-1 ~]# kubectl apply -f deploy.yaml 
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
configmap/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx unchanged
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured


[root@kubernetes-master-1 ~]# kubectl get pod,svc -n ingress-nginx 
NAME                                            READY   STATUS      RESTARTS   AGE
pod/ingress-nginx-admission-create-tb9g8        0/1     Completed   0          70s
pod/ingress-nginx-admission-patch-ppvvg         0/1     Completed   1          70s
pod/ingress-nginx-controller-5847985c57-nrpjp   1/1     Running     0          70s

NAME                                         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/ingress-nginx-controller-admission   ClusterIP   200.1.9.65   <none>        443/TCP   70s

# 我这里忘了改了Deployment所以只有一个哈
# 我们来看看被调度的节点是否占用了80和443

[root@kubernetes-worker-1 ~]# netstat -nplt | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      42599/nginx: master 
tcp6       0      0 :::80                   :::*                    LISTEN      42599/nginx: master 
[root@kubernetes-worker-1 ~]# netstat -nplt | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      42599/nginx: master 
tcp6       0      0 :::8443                 :::*                    LISTEN      42513/nginx-ingress 
tcp6       0      0 :::443                  :::*                    LISTEN      42599/nginx: master 

3:测试服务

[root@kubernetes-master-1 nginx]# cat nginx-deploy.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      imagePullSecrets:
      - name: harbor
      containers:
      - name: nginx
        image: registry.kubernetes-devops.cn/library/nginx:alpine
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: nginx
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: nginx
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx
  namespace: nginx
spec:
  ingressClassName: nginx
  rules:
  - host: nginx.kubernetes-devops.cn
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service: 
            name: nginx
            port: 
              number: 80
              
# 部署
[root@kubernetes-master-1 nginx]# kubectl get pod,svc,ingress -n nginx 
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-5847785bf7-rpxnk   1/1     Running   0          37s
pod/nginx-5847785bf7-wmlsn   1/1     Running   0          37s

NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/nginx   ClusterIP   200.1.228.208   <none>        80/TCP    37s

NAME                              CLASS   HOSTS                        ADDRESS     PORTS   AGE
ingress.networking.k8s.io/nginx   nginx   nginx.kubernetes-devops.cn   10.0.0.11   80      37s

# 这里我在宿主机解析一下对应关系测试访问一下"nginx.kubernetes-devops.cn"

image

posted @ 2022-05-07 02:15  Layzer  阅读(722)  评论(0编辑  收藏  举报