Chinaunix首页 | 论坛 | 博客
  • 博客访问: 351643
  • 博文数量: 52
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 14:21
个人简介

知道自己该干嘛,知道自己能干嘛

文章分类

全部博文(52)

文章存档

2019年(1)

2018年(8)

2017年(2)

2016年(11)

2015年(3)

2014年(10)

2013年(17)

我的朋友

分类: 系统运维

2018-02-23 17:17:28


         之前也写过一篇关于ingress的文章,那还是在1.4.6版本之上,之后k8s升级速度很快,版本更新很频繁,于是写一篇关于1.7.2集群的ingress使用文章。


  1. 具体操作如下:
    
 
curl | kubectl apply -f -

 
curl | kubectl apply -f -

 
curl | kubectl apply -f -

 
curl | kubectl apply -f -

curl
| kubectl apply -f -

  集群已经开启了RBAC策略

  curl | kubectl apply -f -  //  需要执行yaml,开启 ingress读取api的访问权限

  
curl -O 

  修改with-rbac.yaml 指定为daemonset,hostNetwork模式,修改后的yaml文件内容
  
   
  1. apiVersion: extensions/v1beta1
  2. kind: DaemonSet
  3. metadata:
  4.   name: nginx-ingress-controller
  5.   namespace: ingress-nginx
  6. spec:
  7.   #replicas: 2
  8.   selector:
  9.     matchLabels:
  10.       app: ingress-nginx
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: ingress-nginx
  15.       annotations:
  16.         prometheus.io/port: '10254'
  17.         prometheus.io/scrape: 'true'
  18.     spec:
  19.       serviceAccountName: nginx-ingress-serviceaccount
  20.       hostNetwork: true
  21.       containers:
  22.         - name: nginx-ingress-controller
  23.           image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.10.2
  24.           args:
  25.             - /nginx-ingress-controller
  26.             - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
  27.             - --configmap=$(POD_NAMESPACE)/nginx-configuration
  28.             - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
  29.             - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
  30.             - --annotations-prefix=nginx.ingress.kubernetes.io
  31.           env:
  32.             - name: POD_NAME
  33.               valueFrom:
  34.                 fieldRef:
  35.                   fieldPath: metadata.name
  36.             - name: POD_NAMESPACE
  37.               valueFrom:
  38.                 fieldRef:
  39.                   fieldPath: metadata.namespace
  40.           ports:
  41.           - name: http
  42.             containerPort: 80
  43.           - name: https
  44.             containerPort: 443
  45.           livenessProbe:
  46.             failureThreshold: 3
  47.             httpGet:
  48.               path: /healthz
  49.               port: 10254
  50.               scheme: HTTP
  51.             initialDelaySeconds: 10
  52.             periodSeconds: 10
  53.             successThreshold: 1
  54.             timeoutSeconds: 1
  55.           readinessProbe:
  56.             failureThreshold: 3
  57.             httpGet:
  58.               path: /healthz
  59.               port: 10254
  60.               scheme: HTTP
  61.             periodSeconds: 10
  62.             successThreshold: 1
  63.             timeoutSeconds: 1

            查看pod状态
            [root@k8s-1 ingress]# kubectl get --namespace=ingress-nginx po -o wide
NAME                                    READY     STATUS    RESTARTS   AGE       IP              NODE
default-http-backend-2580125250-rx7mq   1/1       Running   5          1d        10.254.81.211   k8s-2
nginx-ingress-controller-nl8md          1/1       Running   0          3d        192.168.0.102   k8s-3
nginx-ingress-controller-rxc3b          1/1       Running   0          3d        192.168.0.101   k8s-2

            创建一个测试服务:
            
  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-app
  5.   namespace: ingress-nginx
  6. spec:
  7.   replicas: 1
  8.   template:
  9.     metadata:
  10.       labels:
  11.         name: nginx
  12.     spec:
  13.       containers:
  14.         - name: nginx
  15.           image: cail/nginx
  16.           imagePullPolicy: IfNotPresent
  17.           ports:
  18.             - containerPort: 80
  19.             
  20. ---

  21. apiVersion: v1
  22. kind: Service
  23. metadata:
  24.   name: nginx-max
  25.   namespace: ingress-nginx
  26. spec:
  27.   ports:
  28.     - port: 80
  29.       targetPort: 80
  30.       protocol: TCP
  31.   selector:
  32.     name: nginx
     kubectl apply -f nginx.yaml

     [root@k8s-1 ingress]# kubectl get --namespace=ingress-nginx po
     NAME                                    READY     STATUS    RESTARTS   AGE
     nginx-app-2763260788-cnzst              1/1       Running   0          1m

     网站需要使用https方式访问,所以需要开启https支持,使用命令创建TLS sercect

     具体创建命令格式:
     kubectl create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE}

     然后我们在 ingress rule内引用这个secret

     
  1. [root@k8s-1 ingress]# cat ingress-maxthon.yaml
  2. apiVersion: extensions/v1beta1
  3. kind: Ingress
  4. metadata:
  5.   name: max-ingress
  6.   #annotations:
  7.   # ingress.kubernetes.io/rewrite-target: /
  8.   namespace: ingress-nginx
  9. spec:
  10.   tls:
  11.   - hosts:
  12.     - sb.max.com
  13.     secretName: max-secret
  14.   rules:
  15.   - host: sb.max.com
  16.     http:
  17.       paths:
  18.       - backend:
  19.           serviceName: nginx-max
  20.           servicePort: 80
  
        查看ingress rules状态
        [root@k8s-1 ingress]# kubectl get --namespace=ingress-nginx ing
        NAME              HOSTS            ADDRESS   PORTS     AGE
        max-ingress   sb.max.com             80, 443   3d


        指定hosts网站域名为node地址,使用浏览器通过https方式访问服务

        

        



           OK,今天在1.7.2版本的k8s集群中部署成功了ingress,并且使用https方式成功访问服务。



           
          参考资料:

                      
          





阅读(1628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~