zoukankan      html  css  js  c++  java
  • k8s 接合阿里云负载均衡 k8s

    在生产环境中 kubernetes 如果仅提供 http 或 https 服务,则可以使用 nginx-ingress 或者 traefik 之类的七层负载均衡软件。当然,也可以通过 NodePort 的方式暴露 http 或 tcp 服务。如果不想直接使用 NodePort 暴露出的那个端口号,而服务器又是运行在阿里云上,那么可以使用阿里云提供的 Kubernetes Cloud Controller Manager 来对外暴露TCP服务或http/https服务。

    前提:

    1. 在阿里云上购买了几台 ecs
    2. 在阿里云的 ecs 上搭建好了一个 kubernetes 集群,这里以 kubernetes1.9.0 为例
    3. 在阿里云上购买一个公网的负载均衡

    就可以开始配置阿里云的负载均衡与kubernetes整合了。以下是配置步骤:
    1)先获取每台 ecs 对应的 regionId 和 ecsId ,可以使用命令使用下面的命令获取。

    echo $(curl -s http://100.100.100.200/latest/meta-data/region-id).$(curl -s http://100.100.100.200/latest/meta-data/instance-id)
    

    2)把 apiserver, controller-manager 和 kubelet 都添加启动参数 --cloud-provider=external ,并且在 kubelet 中添加 --provider-id=上面得到的<REGION_ID>.<ECS_ID>
    3)先创建一个 secret 用来保存阿里的 Access Key Id 和 Access Key Secret(这两项值在阿里的控制台可以查到),编写一个 alicloud-secret.yaml 文件,如下:

    apiVersion: v1
    kind: Secret
    metadata:
      name: alicloud-config
      namespace: kube-system
    data:
      # insert your base64 encoded AliCloud access id and key here, ensure there's no trailing newline:
      # to base64 encode your token run:
      #      echo -n "abc123abc123doaccesstoken" | base64
      access-key-id: "<ACCESS_KEY_ID>"
      access-key-secret: "<ACCESS_KEY_SECRET>"
    

    这里的 id 和 secret 就是把从阿里控制台中得到的用 base64 编码的 AccessKey ,然后替换到上面文件中就可以了。然后用 kubectl apply -f alicloud-secret.yaml 创建对应 secret。
    4)接下来再编写 alicloud-controller-manager.yaml 文件,如下

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: alicloud-controller-manager
      namespace: kube-system
    spec:
      replicas: 1
      revisionHistoryLimit: 2
      template:
        metadata:
          labels:
            app: alicloud-controller-manager
        spec:
          dnsPolicy: Default
          tolerations:
            # this taint is set by all kubelets running `--cloud-provider=external`
            - key: "node.cloudprovider.kubernetes.io/uninitialized"
              value: "true"
              effect: "NoSchedule"
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/kube-test/alicloud-controller-manager:v0.1.0
            name: alicloud-controller-manager
            command:
              - /alicloud-controller-manager
              # set leader-elect=true if you have more that one replicas
              - --leader-elect=false
              - --allocate-node-cidrs=true
              # set this to what you set to controller-manager or kube-proxy
              - --cluster-cidr=10.0.6.0/24
              # if you want to use a secure endpoint or deploy in a kubeadm deployed cluster, you need to use a kubeconfig instead.
              - --master=10.0.0.10:8080
            env:
              - name: ACCESS_KEY_ID
                valueFrom:
                  secretKeyRef:
                    name: alicloud-config
                    key: access-key-id
              - name: ACCESS_KEY_SECRET
                valueFrom:
                  secretKeyRef:
                    name: alicloud-config
                    key: access-key-secret
    

    根据自己的配置情况替换。同样,使用 kubectl apply -f alicloud-controller-manager.yaml 来创建对应的 deployment 。

    然后就可以创建一个service来使用它了,例如我下面创建一个zookeeper的服务

    apiVersion: v1
    kind: Service
    metadata:
      name: zookeeper-master
      labels:
        app: zookeeper-master
      namespace: xxxxx
    spec:
      ports:
      - port: 2181
        targetPort: 2181
        protocol: TCP
        name: main-port
      selector:
        app: zookeeper-master
      type: LoadBalancer
    

    这时可以通过 kubectl get svc 看到对应的 service 已经有了 external-ip 。

    要在阿里控制台把负载均衡设置一下后端服务器,把 k8s 的 node 节点都添加进去。

    ————————————————
    版权声明:本文为CSDN博主「紫枫凝潇烟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/cleverfoxloving/article/details/79186574

  • 相关阅读:
    循环神经网络(三)-RNN进阶
    卷积神经网络CNN【1】-简介
    tensorflow基础【5】-tensorboard
    强化学习8-时序差分控制离线算法Q-Learning
    POJ 1979 Red and Black 四方向棋盘搜索
    POJ 2386 Lake Counting 八方向棋盘搜索
    Problem A: Assembly Required K路归并
    POJ 2051 Argus 优先队列
    优先队列---使用
    Problem B: Bulbs
  • 原文地址:https://www.cnblogs.com/k8s/p/12128948.html
Copyright © 2011-2022 走看看