我在访问另一个命名空间中存在的服务时遇到问题。
我有两个名称空间(在同一个集群中)airflow-dev和dask-dev。
在dask-dev名称空间中,我部署了dask集群(dask调度器和工作器)。此外,还为dask-scheduler pod创建了一个服务(集群IP)。我可以使用“kubectl port-forward”命令从chrome访问dask-scheduler pod。
kubectl端口转发--命名空间dask-dev svc/dask-dev-调度器5002:80
然而,我无法从气流开发命名空间中的pod(气流调度器)访问服务(或dask调度器pod)。尝试使用以下方法访问主机或服务时出现“找不到主机或服务”错误
dask-dev-scheduler.dask-dev.svc.cluster.local:8786
下面是我为dask-dev调度器创建的服务。你能告诉我如何从气流开发命名空间访问服务吗。
apiVersion: v1
metadata:
name: dask-dev-scheduler
namespace: dask-dev
labels:
app: dask-dev
app.kubernetes.io/managed-by: Helm
chart: dask-dev-4.5.7
component: scheduler
heritage: Helm
release: dask-dev
annotations:
meta.helm.sh/release-name: dask-dev
meta.helm.sh/release-namespace: dask-dev
spec:
ports:
- name: dask-dev-scheduler
protocol: TCP
port: 8786
targetPort: 8786
- name: dask-dev-webui
protocol: TCP
port: 80
targetPort: 8787
selector:
app: dask-dev
component: scheduler
release: dask-dev
clusterIP: 10.0.249.111
type: ClusterIP
sessionAffinity: None
status:
loadBalancer: {}
[1]: https://i.stack.imgur.com/UrA7u.jpg
您是否将coredns升级到1.8.3?在从1.19升级到1.20后,我刚刚在我的ek集群上遇到了同样的问题。将coredns降级到1.8.0解决了这个问题。
群集域并不总是 cluster.local
。尝试只使用 dask-dev-scheduler.dask-dev.svc
。假设 Airflow 遵循挂载到 pod 中的生成的 resolv.conf 中的 ndots 查找策略,它应该可以找到它。
通过使用service externalName类型,您可以使用本地服务来引用外部服务(不同命名空间中的服务)。
ExternalName
服务没有选择器或任何已定义的端口或endpoint,因此,您可以使用ExternalName服务将流量引导到外部服务。
apiVersion: v1
kind: Service
metadata:
name: service-b
namespace: namespace-b
spec:
selector:
app: my-app-b
ports:
- protocol: TCP
port: 3000
targetPort: 3000
apiVersion: v1
kind: Service
metadata:
name: service-b-ref
namespace: namespace-a
spec:
type: ExternalName
externalName: service-b.namespace-b.svc.cluster.local
命名空间 a
中连接到 service-b-ref 的任何流量:
在您的示例中,您只需在< code>airflow-dev
中创建一个服务,该服务将流量路由到< code>dask-dev命名空间中的< code>dask-dev-scheduler:
apiVersion: v1
kind: Service
metadata:
name: dask-dev-svc
namespace: airflow-dev
spec:
type: ExternalName
externalName: dask-dev-scheduler.dask-dev.svc.cluster.local
因此,所有需要连接到< code>dask-dev-scheduler的< code>airflow-dev资源都会调用:< code>dask-dev-svc:8786
apiVersion: v1
metadata:
name: dask-dev-scheduler
namespace: dask-dev
spec:
ports:
- name: dask-dev-scheduler
protocol: TCP
port: 8786
targetPort: 8786
# ...
selector:
app: dask-dev
问题内容: 在Python中,命名空间包可让您在多个项目中传播Python代码。当您要将相关的库作为单独的下载发布时,这很有用。例如,目录和中, 最终用户可以和。 定义名称空间包的最佳方法是什么,以便多个Python产品可以在该名称空间中定义模块? 问题答案: TL; DR: 在Python 3.3上,您无需执行任何操作,只需将任何内容都不放在名称空间包目录中即可使用。在3.3之前的版本中,请选择
我在一个多租户节点应用程序中工作,我知道要在Kubernetes中创建一个新的命名空间,可以运行一个kubectl命令,如下所示:
Azure Service Bus有两种身份验证机制: SAS:共享访问签名 根据这里的说法, 对于2014年8月之前创建的所有(服务总线)命名空间,都会创建一个附带的ACS命名空间。 现在是2014年8月之后,所以当您通过Azure管理门户创建服务总线名称空间时,不会创建附带的ACS名称空间。 上面的同一链接还指示使用以下Azure PowerShell cmd let: 但事实证明,useAc
我有一个关于ES6导入模块的问题。 我试图在我的Three.js代码中添加OrbitControl。由于OrbitControls是一个单独的模块,我需要在我的代码中分别导入它们,如下所示。它工作得很好。 然而 我首先想到的是 原因是, 据我所知,如果模块将某些内容导出为导出默认值, 我可以通过在“导入”代码中添加花括号来访问它们。 但是,它没有起作用,因此我假设“三个orbitcontrols”
问题内容: 为了交互式测试我的python脚本,我想创建一个对象,类似于所返回的对象。显而易见的方式 可能会导致傻子错误导致Python repl退出(如上所述)。 那么, 用给定的属性集创建Python名称空间的最简单方法是什么? 例如,我可以即时创建一个(),但不能将其用作: 问题答案: 您可以创建一个简单的类: 在属性方面,它的工作方式与类完全相同: 或者,只需 导入类 ;可从模块中获得: