如何将 nginx 负载均衡器添加到 Jelastic 上的 kubernetes 集群?
How do I add an nginx load balancer to a kubernetes cluster on Jelastic?
我有以下 jps 清单:
jpsVersion: 1.3
jpsType: install
application:
id: my-app
name: My App
version: 0.0
settings:
fields:
- name: envName
caption: Env Name
type: string
required: true
- name: topo
type: radio-fieldset
values:
0-dev: '<b>Development:</b> one master (1) and one scalable worker (1+)'
1-prod: '<b>Production:</b> multi master (3) with API balancers (2+) and scalable workers (2+)'
default: 0-dev
- name: k8s-version
type: string
caption: k8s manifest version
default: v1.16.3
onInstall:
- installKubernetes
actions:
installKubernetes:
install:
jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
envName: ${settings.envName}
displayName: ${settings.envName}
settings:
deploy: cc
topo: ${settings.topo}
dashboard: version2
ingress-controller: Nginx
storage: true
api: true
monitoring: true
version: ${settings.k8s-version}
jaeger: false
现在,我想在k8s集群前面加一个负载均衡器,比如
env:
topology:
nodes:
- nodeGroup: bl
nodeType: nginx-dockerized
tag: 1.16.1
displayName: Node balancing
count: 1
fixedCloudlets: 1
cloudlets: 4
当然是上面的kubernetes jps安装创建了一个topology。因此,我无法调用上面的 env
部分。如何将新节点添加到由 jelastic kubernetes jps 创建的拓扑中?我找到了 addNodes,但它似乎不允许定义进入 bl
节点组的内容。
在 Jelastic API 中,我找到了 EditNodeGroup 方法,我相信它可以解决我的问题。但是,文档不是很清楚,它缺少一个示例,我可以从中猜测如何填充参数。我如何使用该方法将 nginx 负载平衡器添加到我的 k8s 环境?
编辑
EditNodeGroup
方法对那个问题没有用。我认为,目前,我最好的选择是根据我的需要分叉 jelastic-jps/kubernetes and adapt the beforeinstall。我还有其他选择吗?我浏览了 API,发现无法添加我的 nginx 负载均衡器。
在外部清单调用期间无法更改环境拓扑,因为它是在该清单中创建的。但它可以在清单完成后进行更改。
整个方法是:
onInstall:
- installKubernetes
- addBalancer
actions:
installKubernetes:
install:
jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
envName: ${settings.envName}
...
addBalancer:
- install:
envName: ${settings.envName}
jps:
type: update
name: Add Balancer Node
onInstall:
- addNodes:
....
请参考 https://github.com/jelastic-jps/kubernetes/blob/ad62208a5b3796bb7beeaedfce5c42b18512d9f0/addons/storage.jps 示例,了解如何在清单中使用 "addNodes" 操作。
此外,参考 https://docs.cloudscripting.com/creating-manifest/actions/#addnodes 描述了所有可以使用的字段。
K8s for Jelastic 的最新发布版本是:v1.16.6,因此您可以在您的清单中使用它。
但是,请注意,通过此 Balancer 实例,您将访问默认的 Kubernetes 入口控制器,即您当前在 "http(s)://".
上拥有的相同 ingresses/paths
当然,您可以为添加的 BL 分配一个 public ip,并且不再像以前那样通过共享平衡器访问相同的功能,而是从现在开始通过 public IP。
简而言之,Jelastic Balancer 实例目前不提供 Kubernetes 服务 LoadBalancer 功能——如果您正好需要这个功能。 K8S LoadBalancer 功能将在下一个版本中添加: public 添加到 "cp" worker 的 IP 可以自动用于在 Kubernetes 集群内创建的 LoadBalancer。我们希望将此功能添加到 1.16.8+
如果您还有其他问题,请告诉我们。
我有以下 jps 清单:
jpsVersion: 1.3
jpsType: install
application:
id: my-app
name: My App
version: 0.0
settings:
fields:
- name: envName
caption: Env Name
type: string
required: true
- name: topo
type: radio-fieldset
values:
0-dev: '<b>Development:</b> one master (1) and one scalable worker (1+)'
1-prod: '<b>Production:</b> multi master (3) with API balancers (2+) and scalable workers (2+)'
default: 0-dev
- name: k8s-version
type: string
caption: k8s manifest version
default: v1.16.3
onInstall:
- installKubernetes
actions:
installKubernetes:
install:
jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
envName: ${settings.envName}
displayName: ${settings.envName}
settings:
deploy: cc
topo: ${settings.topo}
dashboard: version2
ingress-controller: Nginx
storage: true
api: true
monitoring: true
version: ${settings.k8s-version}
jaeger: false
现在,我想在k8s集群前面加一个负载均衡器,比如
env:
topology:
nodes:
- nodeGroup: bl
nodeType: nginx-dockerized
tag: 1.16.1
displayName: Node balancing
count: 1
fixedCloudlets: 1
cloudlets: 4
当然是上面的kubernetes jps安装创建了一个topology。因此,我无法调用上面的 env
部分。如何将新节点添加到由 jelastic kubernetes jps 创建的拓扑中?我找到了 addNodes,但它似乎不允许定义进入 bl
节点组的内容。
在 Jelastic API 中,我找到了 EditNodeGroup 方法,我相信它可以解决我的问题。但是,文档不是很清楚,它缺少一个示例,我可以从中猜测如何填充参数。我如何使用该方法将 nginx 负载平衡器添加到我的 k8s 环境?
编辑
EditNodeGroup
方法对那个问题没有用。我认为,目前,我最好的选择是根据我的需要分叉 jelastic-jps/kubernetes and adapt the beforeinstall。我还有其他选择吗?我浏览了 API,发现无法添加我的 nginx 负载均衡器。
在外部清单调用期间无法更改环境拓扑,因为它是在该清单中创建的。但它可以在清单完成后进行更改。 整个方法是:
onInstall:
- installKubernetes
- addBalancer
actions:
installKubernetes:
install:
jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
envName: ${settings.envName}
...
addBalancer:
- install:
envName: ${settings.envName}
jps:
type: update
name: Add Balancer Node
onInstall:
- addNodes:
....
请参考 https://github.com/jelastic-jps/kubernetes/blob/ad62208a5b3796bb7beeaedfce5c42b18512d9f0/addons/storage.jps 示例,了解如何在清单中使用 "addNodes" 操作。
此外,参考 https://docs.cloudscripting.com/creating-manifest/actions/#addnodes 描述了所有可以使用的字段。
K8s for Jelastic 的最新发布版本是:v1.16.6,因此您可以在您的清单中使用它。
但是,请注意,通过此 Balancer 实例,您将访问默认的 Kubernetes 入口控制器,即您当前在 "http(s)://".
上拥有的相同 ingresses/paths当然,您可以为添加的 BL 分配一个 public ip,并且不再像以前那样通过共享平衡器访问相同的功能,而是从现在开始通过 public IP。
简而言之,Jelastic Balancer 实例目前不提供 Kubernetes 服务 LoadBalancer 功能——如果您正好需要这个功能。 K8S LoadBalancer 功能将在下一个版本中添加: public 添加到 "cp" worker 的 IP 可以自动用于在 Kubernetes 集群内创建的 LoadBalancer。我们希望将此功能添加到 1.16.8+
如果您还有其他问题,请告诉我们。