k8s-nginx-ingress-2

ingress实现虚拟主机的方案:

在这里插入图片描述步骤:
总的:建立两个deployment 两个对应的svc,和两个ingress
建立yaml文件

vimdeployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: deployment-1
spec: 
  replicas: 2
  template: 
    metadata: 
      labels: 
        name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:v1
          imagePullPolicy: IfNotPresent
          ports: 
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    name: nginx
vim deployment2.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  name: deployment-2
spec: 
  replicas: 2
  template: 
    metadata: 
      labels: 
        name: nginx2
    spec:
      containers:
        - name: nginx2
          image: nginx
          imagePullPolicy: IfNotPresent
          ports: 
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: svc-2
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    name: nginx2
vim ingressrule.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
 name: ingress1
spec: 
  rules:
   - host: www1.kk.com
     http:
      paths:
       - path: /
         backend:
           serviceName: svc-1
           servicePort: 80
---

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
 name: ingress2
spec: 

  rules:
   - host: www2.kk.com
     http:
      paths:
       - path: /
         backend:
           serviceName: svc-2
           servicePort: 80

注意: 对应的标签一定要写好。

创建:
kubectl apply -f deployment.yaml
kubectl apply -f deployment2.yaml
kubectl apply -f ingressrule.yaml

查看容器nginx.config的配置:
找到容器:

[root@apiserver ingress-vh]# kubectl get pod -n ingress-nginx 
NAME                                       READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-94cd6cc55-tj9n5   1/1     Running   0          4h27m

进入容器查看:

[root@apiserver ingress-vh]# kubectl exec -it nginx-ingress-controller-94cd6cc55-tj9n5 -n ingress-nginx -- /bin/bash
cat nginx.conf 

配置宿主机的/etc/hosts的域名配置,添加如下:

192.168.10.167 www1.kk.com
192.168.10.167 www2.kk.com

得到暴露的端口:(80:31866/TCP,443:30271/TCP)
[root@apiserver ingress-vh]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.110.60.132 80:31866/TCP,443:30271/TCP 4h20m

在网页用域名+端口访问
www1.kk.com: 31866和www2.kk.com:31866 都能访问到nginx
但我在这里出现了一点问题:访问www1.kk.com: 31866时一直报错:
503 service temporarily unavailable
这时出现错误的原因是我没有把ing和svc中上次练习的删掉,

[root@apiserver ingress-vh]# kubectl get ing,svc
NAME                            HOSTS         ADDRESS         PORTS   AGE
ingress.extensions/ingress1     www1.kk.com   10.110.60.132   80      36m
ingress.extensions/ingress2     www2.kk.com   10.110.60.132   80      36m
ingress.extensions/nginx-test   www1.kk.com   10.110.60.132   80      3h20m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   5d23h
service/svc-1        ClusterIP   10.110.128.231   <none>        80/TCP    50m
service/svc-2        ClusterIP   10.97.6.38       <none>        80/TCP    14m

删掉ing nginx-test 就好了:

[root@apiserver ingress-vh]# kubectl delete ing nginx-test
发布了44 篇原创文章 · 获赞 0 · 访问量 961

猜你喜欢

转载自blog.csdn.net/qq_39122146/article/details/103821819