做海购的网站深圳宝安区怎么找服务
1. 网站架构

 本次部署形式完全舍弃 Docker,将所有应用都置于Kubernetes,采用 Deployment 而非单 Pod 部署,稳定性得到升级。
2. 部署 MariaDB
[root@k8s-master ~]# mkdir tdr
 [root@k8s-master ~]# cd tdr/
(1)定义 ConfigMap
[root@k8s-master tdr]# vim mariadb-configmap.yaml 
 apiVersion: v1
 kind: ConfigMap
 metadata:
         name: mariadb-configmap
 data:
         USER: "wp"
         PASSWORD: "123"
         ROOT_PASSWORD: "123"
         DATABASE: "db"
(2)定义 Deployment
[root@k8s-master tdr]# vim mariadb-deployment.yaml
 apiVersion: apps/v1
 kind: Deployment
 metadata:
         name: mariadb-deployment
         labels:
                 app: mariadb-deployment
 spec:
         replicas:
         selector: 
                 matchLabels:
                         app: mariadb-deployment
         template:
                 metadata: 
                         labels:
                                 app: mariadb-deployment
                 spec:
                         containers:
                         -       name: mariadb
                                 image: docker.io/library/mariadb:latest
                                 imagePullPolicy: Never
                                 ports:
                                 -       name: mariadbport
                                         containerPort: 3306
                                 envFrom:
                                 -       prefix: "MARIADB_"
                                         configMapRef:
                                                 name: mariadb-configmap
(3)定义 Service
[root@k8s-master tdr]# vim mariadb-service.yaml 
 apiVersion: v1
 kind: Service
 metadata:
         name: mariadb-service
 spec:
         selector:
                 app: mariadb-deployment
         ports:
         -       port: 3306
                 targetPort: 3306
                 protocol: TCP
         type: NodePort
(4)启动 MariaDB
[root@k8s-master tdr]# kubectl create -f mariadb-configmap.yaml 
 configmap/mariadb-configmap created
 [root@k8s-master tdr]# kubectl create -f mariadb-deployment.yaml 
 deployment.apps/mariadb-deployment created
 [root@k8s-master tdr]# kubectl create -f mariadb-service.yaml 
 service/mariadb-service created
[root@k8s-master tdr]# kubectl get all
 NAME                                      READY   STATUS    RESTARTS       AGE
 #pod信息:
 pod/cluster-test-66bb44bd88-nk46t         1/1     Running   38 (14m ago)   10d
 pod/mariadb-deployment-5bf6d9f98c-wt7cc   1/1     Running   0              25m
 #service信息:
 NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
 service/kubernetes        ClusterIP   10.96.0.1      <none>        443/TCP          10d
 service/mariadb-service   NodePort    10.96.249.62   <none>        3306:30150/TCP   14m
 #deployment信息:
 NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
 deployment.apps/cluster-test         1/1     1            1           10d
 deployment.apps/mariadb-deployment   1/1     1            1           25m
 #replicaset信息:
 NAME                                            DESIRED   CURRENT   READY   AGE
 replicaset.apps/cluster-test-66bb44bd88         1         1         1       10d
 replicaset.apps/mariadb-deployment-5bf6d9f98c   1         1         1       25m
[root@k8s-master tdr]# kubectl exec -it pods/cluster-test-66bb44bd88-nk46t -- bash
 (08:47 cluster-test-66bb44bd88-nk46t:/) nslookup mariadb-service
 Server:        10.96.0.10
 Address:    10.96.0.10#53
Name:    mariadb-service.default.svc.cluster.local
 Address: 10.96.249.62
3. 部署 Wrodpress
(1)定义 ConfigMap
[root@k8s-master tdr]# vim wordpress-configmap.yaml
 apiVersion: v1
 kind: ConfigMap
 metadata:
         name: wordpress-config
 data:
         NAME: "db"
         USER: "wp"
         PASSWORD: "123"
         HOST: "mariadb-service"
(2)定义 Deployment
[root@k8s-master tdr]# vim wordpress-deployment.yaml
 apiVersion: apps/v1
 kind: Deployment
 metadata:
         name: wordpress-deployment
         labels:
                 app: wordpress-deployment
 spec:
         replicas: 2
         selector:
                 matchLabels:
                         app: wordpress-deployment
         template:
                 metadata:
                         labels:
                                 app: wordpress-deployment
                 spec:
                         containers:
                         -       name: wp
                                 image: docker.io/library/wordpress:latest
                                 imagePullPolicy: Never
                                 ports:
                                 -       name: wordpressport
                                         containerPort: 80
                                 envFrom:
                                 -       prefix: "WORDPRESS_DB_"
                                         configMapRef:
                                                 name: wordpress-config
(3)定义 Service
[root@k8s-master tdr]# vim wordpress-service.yaml 
 apiVersion: v1
 kind: Service
 metadata:
         name: wordpress-service
 spec:
         selector:
                 app: wordpress-deployment
         ports:
         -       name: http
                 port: 80
                 targetPort: 80
                 protocol: TCP
                 nodePort: 32000
         type: NodePort
(4)启动 WordPress
[root@k8s-master tdr]# kubectl create -f wordpress-configmap.yaml 
 configmap/workpress-config created
 [root@k8s-master tdr]# kubectl create -f wordpress-deployment.yaml
 deployment.apps/wordpress-deployment created
 [root@k8s-master tdr]# kubectl create -f wordpress-service.yaml 
 service/wordpress-service created
 [root@k8s-master tdr]# kubectl get po
 NAME                                    READY   STATUS    RESTARTS       AGE
 cluster-test-66bb44bd88-nk46t           1/1     Running   38 (50m ago)   10d
 mariadb-deployment-5bf6d9f98c-wt7cc     1/1     Running   0              60m
 wordpress-deployment-555685954b-77wb8   1/1     Running   0              107s
 wordpress-deployment-555685954b-9g8rf   1/1     Running   0              107s
(5)访问测试
访问192.168.1.110:32000

4. 部署Nginx Ingress Controller
(1)安装Ingress Controller
https://www.yuque.com/login?goto=https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2024%2Fyaml%2F27632550%2F1704426623262-496917bf-7f4b-48e6-83e1-429f2e1ee853.yaml
 下载附件再导入到服务器内,再进行安装
[root@k8s-master tdr]# cat ingress.yaml 
 apiVersion: v1
 kind: Namespace
 metadata:
   labels:
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
   name: ingress-nginx
 ---
 apiVersion: v1
 automountServiceAccountToken: true
 kind: ServiceAccount
 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.7.1
   name: ingress-nginx
   namespace: ingress-nginx
 ---
 apiVersion: v1
 kind: ServiceAccount
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
   namespace: ingress-nginx
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 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.7.1
   name: ingress-nginx
   namespace: ingress-nginx
 rules:
 - apiGroups:
   - ""
   resources:
   - namespaces
   verbs:
   - get
 - apiGroups:
   - ""
   resources:
   - configmaps
   - pods
   - secrets
   - endpoints
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - ""
   resources:
   - services
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingresses
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingresses/status
   verbs:
   - update
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingressclasses
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - coordination.k8s.io
   resourceNames:
   - ingress-nginx-leader
   resources:
   - leases
   verbs:
   - get
   - update
 - apiGroups:
   - coordination.k8s.io
   resources:
   - leases
   verbs:
   - create
 - apiGroups:
   - ""
   resources:
   - events
   verbs:
   - create
   - patch
 - apiGroups:
   - discovery.k8s.io
   resources:
   - endpointslices
   verbs:
   - list
   - watch
   - get
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
   namespace: ingress-nginx
 rules:
 - apiGroups:
   - ""
   resources:
   - secrets
   verbs:
   - get
   - create
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
 metadata:
   labels:
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx
 rules:
 - apiGroups:
   - ""
   resources:
   - configmaps
   - endpoints
   - nodes
   - pods
   - secrets
   - namespaces
   verbs:
   - list
   - watch
 - apiGroups:
   - coordination.k8s.io
   resources:
   - leases
   verbs:
   - list
   - watch
 - apiGroups:
   - ""
   resources:
   - nodes
   verbs:
   - get
 - apiGroups:
   - ""
   resources:
   - services
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingresses
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - ""
   resources:
   - events
   verbs:
   - create
   - patch
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingresses/status
   verbs:
   - update
 - apiGroups:
   - networking.k8s.io
   resources:
   - ingressclasses
   verbs:
   - get
   - list
   - watch
 - apiGroups:
   - discovery.k8s.io
   resources:
   - endpointslices
   verbs:
   - list
   - watch
   - get
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
 rules:
 - apiGroups:
   - admissionregistration.k8s.io
   resources:
   - validatingwebhookconfigurations
   verbs:
   - get
   - update
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 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.7.1
   name: ingress-nginx
   namespace: ingress-nginx
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: Role
   name: ingress-nginx
 subjects:
 - kind: ServiceAccount
   name: ingress-nginx
   namespace: ingress-nginx
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
   namespace: ingress-nginx
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: Role
   name: ingress-nginx-admission
 subjects:
 - kind: ServiceAccount
   name: ingress-nginx-admission
   namespace: ingress-nginx
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRoleBinding
 metadata:
   labels:
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: ingress-nginx
 subjects:
 - kind: ServiceAccount
   name: ingress-nginx
   namespace: ingress-nginx
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRoleBinding
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: ingress-nginx-admission
 subjects:
 - kind: ServiceAccount
   name: ingress-nginx-admission
   namespace: ingress-nginx
 ---
 apiVersion: v1
 data:
   allow-snippet-annotations: "true"
 kind: ConfigMap
 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.7.1
   name: ingress-nginx-controller
   namespace: ingress-nginx
 ---
 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.7.1
   name: ingress-nginx-controller
   namespace: ingress-nginx
 spec:
   ipFamilies:
   - IPv4
   ipFamilyPolicy: SingleStack
   ports:
   - appProtocol: http
     name: http
     port: 80
     protocol: TCP
     targetPort: http
   - appProtocol: https
     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: NodePort
 ---
 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.7.1
   name: ingress-nginx-controller-admission
   namespace: ingress-nginx
 spec:
   ports:
   - appProtocol: https
     name: https-webhook
     port: 443
     targetPort: webhook
   selector:
     app.kubernetes.io/component: controller
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
   type: ClusterIP
 ---
 apiVersion: apps/v1
 kind: Deployment
 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.7.1
   name: ingress-nginx-controller
   namespace: ingress-nginx
 spec:
   minReadySeconds: 0
   revisionHistoryLimit: 10
   selector:
     matchLabels:
       app.kubernetes.io/component: controller
       app.kubernetes.io/instance: ingress-nginx
       app.kubernetes.io/name: ingress-nginx
   template:
     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.7.1
     spec:
       containers:
       - args:
         - /nginx-ingress-controller
         - --election-id=ingress-nginx-leader
         - --controller-class=k8s.io/ingress-nginx
         - --ingress-class=nginx
         - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
         - --validating-webhook=:8443
         - --validating-webhook-certificate=/usr/local/certificates/cert
         - --validating-webhook-key=/usr/local/certificates/key
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         - name: LD_PRELOAD
           value: /usr/local/lib/libmimalloc.so
         image: registry.cn-beijing.aliyuncs.com/dotbalo/ingress-nginx-controller:v1.7.1
         imagePullPolicy: IfNotPresent
         lifecycle:
           preStop:
             exec:
               command:
               - /wait-shutdown
         livenessProbe:
           failureThreshold: 5
           httpGet:
             path: /healthz
             port: 10254
             scheme: HTTP
           initialDelaySeconds: 10
           periodSeconds: 10
           successThreshold: 1
           timeoutSeconds: 1
         name: controller
         ports:
         - containerPort: 80
           name: http
           protocol: TCP
         - containerPort: 443
           name: https
           protocol: TCP
         - containerPort: 8443
           name: webhook
           protocol: TCP
         readinessProbe:
           failureThreshold: 3
           httpGet:
             path: /healthz
             port: 10254
             scheme: HTTP
           initialDelaySeconds: 10
           periodSeconds: 10
           successThreshold: 1
           timeoutSeconds: 1
         resources:
           requests:
             cpu: 100m
             memory: 90Mi
         securityContext:
           allowPrivilegeEscalation: true
           capabilities:
             add:
             - NET_BIND_SERVICE
             drop:
             - ALL
           runAsUser: 101
         volumeMounts:
         - mountPath: /usr/local/certificates/
           name: webhook-cert
           readOnly: true
       dnsPolicy: ClusterFirst
       nodeSelector:
         kubernetes.io/os: linux
       serviceAccountName: ingress-nginx
       terminationGracePeriodSeconds: 300
       volumes:
       - name: webhook-cert
         secret:
           secretName: ingress-nginx-admission
 ---
 apiVersion: batch/v1
 kind: Job
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission-create
   namespace: ingress-nginx
 spec:
   template:
     metadata:
       labels:
         app.kubernetes.io/component: admission-webhook
         app.kubernetes.io/instance: ingress-nginx
         app.kubernetes.io/name: ingress-nginx
         app.kubernetes.io/part-of: ingress-nginx
         app.kubernetes.io/version: 1.7.1
       name: ingress-nginx-admission-create
     spec:
       containers:
       - args:
         - create
         - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
         - --namespace=$(POD_NAMESPACE)
         - --secret-name=ingress-nginx-admission
         env:
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         image: registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen:v20230312
         imagePullPolicy: IfNotPresent
         name: create
         securityContext:
           allowPrivilegeEscalation: false
       nodeSelector:
         kubernetes.io/os: linux
       restartPolicy: OnFailure
       securityContext:
         fsGroup: 2000
         runAsNonRoot: true
         runAsUser: 2000
       serviceAccountName: ingress-nginx-admission
 ---
 apiVersion: batch/v1
 kind: Job
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission-patch
   namespace: ingress-nginx
 spec:
   template:
     metadata:
       labels:
         app.kubernetes.io/component: admission-webhook
         app.kubernetes.io/instance: ingress-nginx
         app.kubernetes.io/name: ingress-nginx
         app.kubernetes.io/part-of: ingress-nginx
         app.kubernetes.io/version: 1.7.1
       name: ingress-nginx-admission-patch
     spec:
       containers:
       - args:
         - patch
         - --webhook-name=ingress-nginx-admission
         - --namespace=$(POD_NAMESPACE)
         - --patch-mutating=false
         - --secret-name=ingress-nginx-admission
         - --patch-failure-policy=Fail
         env:
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         image: registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen:v20230312
         imagePullPolicy: IfNotPresent
         name: patch
         securityContext:
           allowPrivilegeEscalation: false
       nodeSelector:
         kubernetes.io/os: linux
       restartPolicy: OnFailure
       securityContext:
         fsGroup: 2000
         runAsNonRoot: true
         runAsUser: 2000
       serviceAccountName: ingress-nginx-admission
 ---
 apiVersion: networking.k8s.io/v1
 kind: IngressClass
 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.7.1
   name: nginx
 spec:
   controller: k8s.io/ingress-nginx
 ---
 apiVersion: admissionregistration.k8s.io/v1
 kind: ValidatingWebhookConfiguration
 metadata:
   labels:
     app.kubernetes.io/component: admission-webhook
     app.kubernetes.io/instance: ingress-nginx
     app.kubernetes.io/name: ingress-nginx
     app.kubernetes.io/part-of: ingress-nginx
     app.kubernetes.io/version: 1.7.1
   name: ingress-nginx-admission
 webhooks:
 - admissionReviewVersions:
   - v1
   clientConfig:
     service:
       name: ingress-nginx-controller-admission
       namespace: ingress-nginx
       path: /networking/v1/ingresses
   failurePolicy: Fail
   matchPolicy: Equivalent
   name: validate.nginx.ingress.kubernetes.io
   rules:
   - apiGroups:
     - networking.k8s.io
     apiVersions:
     - v1
     operations:
     - CREATE
     - UPDATE
     resources:
     - ingresses
   sideEffects: None
 [root@k8s-master tdr]# kubectl create -f ingress.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 created
 clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
 rolebinding.rbac.authorization.k8s.io/ingress-nginx created
 rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
 clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
 clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
 configmap/ingress-nginx-controller created
 service/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 created
 validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
[root@k8s-master tdr]# kubectl get po -n ingress-nginx 
 NAME                                        READY   STATUS      RESTARTS   AGE
 ingress-nginx-admission-create-mxff4        0/1     Completed   0          13m
 ingress-nginx-admission-patch-lbmck         0/1     Completed   2          13m
 ingress-nginx-controller-674f66cf96-xjs2t   1/1     Running     0          13m
[root@k8s-master ~]# kubectl get svc -n ingress-nginx 
 NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
 ingress-nginx-controller             NodePort    10.96.184.233   <none>        80:31546/TCP,443:31757/TCP   14m
 ingress-nginx-controller-admission   ClusterIP   10.96.243.95    <none>        443/TCP   
 #记住ingress-nginx-controller的端口映射80=>31546
(2)部署Ingress
在安装本文的Ingress时,Ingress class已连带被定义,所以直接部署 Ingress
[root@k8s-master tdr]# kubectl get ingressclasses.networking.k8s.io 
 NAME    CONTROLLER             PARAMETERS   AGE
 nginx   k8s.io/ingress-nginx   <none>       29m
[root@k8s-master tdr]# vim web-ingress.yaml
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
         name: nginx-ingress
 spec:
         ingressClassName: nginx
         rules:
         -       host: wp-web.com          #域名
                 http:
                         paths:
                         -       backend:
                                         service:
                                                 name: wordpress-service           #service名称,这里要匹配到wordpress的service
                                                 port:
                                                         number: 80
                                 path: /
                                 pathType: ImplementationSpecific         #路径匹配方式
 [root@k8s-master tdr]# kubectl create -f web-ingress.yaml 
 ingress.networking.k8s.io/nginx-ingress created
5. 访问测试
(1)主机hosts劫持
修改 windows 映射文件:C:\Windows\System32\drivers\etc
找到 hosts 文件,使用记事本打开,编辑最后的内容

(2)测试访问IP
访问 IP+Ingress 映射的端口是无法进入后端服务器的

(3)测试访问 URL
只有访问先前定义的域名+端口才可访问到后端服务器
 本次实战域名服务器为:wp-web.com:31546
 后续论坛网站自行搭建

