谁能让我知道我们如何通过kubernetes集群中的另一个Pod来访问部署在一个Pod上的服务?
例:
有一个部署在Node1上的Nginx服务(以Pod名称为Nginx-12345)和另一个部署在Node2上的服务(以Pod名称为Service-23456)。现在,如果“服务”出于某种原因要与“ nginx”进行通信,那么我们如何在“ service-23456”窗格中访问“ nginx”?
label selectors我正在尝试通过Kubernetes Python Client获取服务。我正在使用list_service_for_all_namespaces方法来检索服务,并使用field_selector如下参数对其进行过滤:
...
field_selector="spec.selector={u'app': 'redis'}
...
services = v1.list_service_for_all_namespaces(field_selector=field_selector, watch=False)
for service in services.items:
print(service)
...
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"\"spec.selector\" is not a known field selector: only \"metadata.name\", \"metadata.namespace\"","reason":"BadRequest","code":400}
Run Code Online (Sandbox Code Playgroud)
因此,似乎只有name和namespace是有效参数,但没有记录:
field_selector = 'field_selector_example' # str | 通过字段限制返回对象列表的选择器。默认为一切。(选修的)
目前我的解决方法是为服务设置与标签选择器相同的标签,然后通过参数检索它,但我希望能够通过.label_selectorlabel selectors
问题是,从一开始我就需要获取服务背后的端点(后端 Pod),但 API 调用甚至没有返回此信息,所以我想我会获取选择器,将它们与 Pod 上的标签进行匹配,就这样,但现在我意识到选择器也不可能获得。
这限制太多了。我想可能我的方法是错误的。有谁知道如何获得label selectors服务?
在 GCP 中,当使用 Terraform 时,我发现我可以使用name属性以及self_link. 所以,我想知道是否在某些情况下我必须使用其中任何一个。
例如:
resource "google_compute_ssl_policy" "custom_ssl_policy" {
name = "my-ssl-policy"
profile = "MODERN"
min_tls_version = "TLS_1_1"
}
Run Code Online (Sandbox Code Playgroud)
这个对象,那么可以被称为:
ssl_policy = google_compute_ssl_policy.custom_ssl_policy.name
Run Code Online (Sandbox Code Playgroud)
和
ssl_policy = google_compute_ssl_policy.custom_ssl_policy.self_link
Run Code Online (Sandbox Code Playgroud)
我知道object.name返回 Terraform 对象名称,并object.self_link返回 GCP 资源的 URI。
我尝试过使用多个对象,并且它适用于这两个属性,所以我想知道这是否微不足道,或者在某些情况下我应该使用其中之一。
VirtualServices我正在尝试使用 Istio添加、覆盖和删除标头。向请求添加标头并从响应中删除标头效果很好,但不会覆盖请求中的标头。
因此,根据 Istio 文档,标头操作如下:
这是我的VirtualService:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: server-vs
spec:
hosts:
- server.istio.svc.cluster.local
http:
- headers:
request:
set:
test: "true"
add:
added: "header"
route:
- destination:
host: server.istio.svc.cluster.local
subset: apache
weight: 90
- destination:
host: server.istio.svc.cluster.local
subset: nginx
headers:
response:
remove:
- foo
weight: 10
Run Code Online (Sandbox Code Playgroud)
重点关注set标题,这是我的理解。Istio 将使用 key 来识别标头test,并将用 覆盖该值true。因此,如果我使用-H "test: hello"参数来卷曲我的服务,我应该在我的请求中看到test: true。
现在,我已在后端 pod 中安装了 tcpdump,并且可以看到added: header. 我还可以看到它foo: bar …
尝试在本地环境中使用 Pod 安装示例容器应用程序,我使用的是 docker 桌面附带的 kubernates 集群。
我正在使用 bellow 命令和 YML 文件 kubectl create -f test_image_pull.yml 创建 Pod
apiVersion: v1
kind: Pod
metadata:
# value must be lower case
name: sample-python-web-app
spec:
containers:
- name: sample-hello-world
image: local/sample:latest
imagePullPolicy: Always
command: ["echo", "SUCCESS"]
Run Code Online (Sandbox Code Playgroud)
docker 文件用于构建映像,如果您使用 docker run 运行,则此容器运行没有任何问题
# Use official runtime python
FROM python:2.7-slim
# set work directory to app
WORKDIR /app
# Copy current directory
COPY . /app
# install needed packages
RUN pip install --trusted-host pypi.python.org -r …Run Code Online (Sandbox Code Playgroud)