- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用于部署 Pod 和服务的 k8s 模板。我正在使用此模板根据 AKS 上的某些参数(不同名称、标签)部署不同的服务。
某些服务获取其外部 IP,而少数服务外部 IP 始终处于待处理状态。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
service/ca1st-orgc LoadBalancer 10.0.25.227 <pending> 7054:30907/TCP 17m
service/ca1st-orgc-db-mysql LoadBalancer 10.0.97.81 52.13.67.9 3306:31151/TCP 17m
service/kafka1st ClusterIP 10.0.15.90 <none> 9092/TCP,9093/TCP 17m
service/kafka2nd ClusterIP 10.0.17.22 <none> 9092/TCP,9093/TCP 17m
service/kafka3rd ClusterIP 10.0.02.07 <none> 9092/TCP,9093/TCP 17m
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 20m
service/orderer1st-orgc LoadBalancer 10.0.17.19 <pending> 7050:30971/TCP 17m
service/orderer2nd-orgc LoadBalancer 10.0.02.15 13.06.27.31 7050:31830/TCP 17m
service/peer1st-orga LoadBalancer 10.0.10.19 <pending> 7051:31402/TCP,7052:32368/TCP,7053:31786/TCP,5984:30721/TCP 17m
service/peer1st-orgb LoadBalancer 10.0.218.48 13.06.25.13 7051:31892/TCP,7052:30326/TCP,7053:31419/TCP,5984:31882/TCP 17m
service/peer2nd-orga LoadBalancer 10.0.86.64 <pending> 7051:30590/TCP,7052:31870/TCP,7053:30362/TCP,5984:30036/TCP 17m
service/peer2nd-orgb LoadBalancer 10.0.195.212 52.13.58.3 7051:30476/TCP,7052:30091/TCP,7053:30099/TCP,5984:32614/TCP 17m
service/zookeeper1st ClusterIP 10.0.57.192 <none> 2888/TCP,3888/TCP,2181/TCP 17m
service/zookeeper2nd ClusterIP 10.0.174.25 <none> 2888/TCP,3888/TCP,2181/TCP 17m
service/zookeeper3rd ClusterIP 10.0.210.166 <none> 2888/TCP,3888/TCP,2181/TCP 17m
有趣的是,它是用于部署所有相关服务的相同模板。例如,以 peer 为前缀的服务由同一模板部署。
有人遇到过这种情况吗?
Deployment template for an orderer Pod
apiVersion: v1
kind: Pod
metadata:
name: {{ orderer.name }}
labels:
k8s-app: {{ orderer.name }}
type: orderer
{% if (project_version is version('1.4.0','>=') or 'stable' in project_version or 'latest' in project_version) and fabric.metrics is defined and fabric.metrics %}
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: /metrics
prometheus.io/port: '8443'
prometheus.io/scheme: 'http'
{% endif %}
spec:
{% if creds %}
imagePullSecrets:
- name: regcred
{% endif %}
restartPolicy: OnFailure
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: fabriccerts
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchExpressions:
- key: type
operator: In
values:
- orderer
topologyKey: kubernetes.io/hostname
containers:
- name: {{ orderer.name }}
image: {{ fabric.repo.url }}fabric-orderer:{{ fabric.baseimage_tag }}
{% if 'latest' in project_version or 'stable' in project_version %}
imagePullPolicy: Always
{% else %}
imagePullPolicy: IfNotPresent
{% endif %}
env:
{% if project_version is version('1.3.0','<') %}
- { name: "ORDERER_GENERAL_LOGLEVEL", value: "{{ fabric.logging_level | default('ERROR') | lower }}" }
{% elif project_version is version('1.4.0','>=') or 'stable' in project_version or 'latest' in project_version %}
- { name: "FABRIC_LOGGING_SPEC", value: "{{ fabric.logging_level | default('ERROR') | lower }}" }
{% endif %}
- { name: "ORDERER_GENERAL_LISTENADDRESS", value: "0.0.0.0" }
- { name: "ORDERER_GENERAL_GENESISMETHOD", value: "file" }
- { name: "ORDERER_GENERAL_GENESISFILE", value: "/etc/hyperledger/fabric/artifacts/keyfiles/genesis.block" }
- { name: "ORDERER_GENERAL_LOCALMSPID", value: "{{ orderer.org }}" }
- { name: "ORDERER_GENERAL_LOCALMSPDIR", value: "/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/msp" }
- { name: "ORDERER_GENERAL_TLS_ENABLED", value: "{{ tls | lower }}" }
{% if tls %}
- { name: "ORDERER_GENERAL_TLS_PRIVATEKEY", value: "/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/server.key" }
- { name: "ORDERER_GENERAL_TLS_CERTIFICATE", value: "/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/server.crt" }
- { name: "ORDERER_GENERAL_TLS_ROOTCAS", value: "[/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/ca.crt]" }
{% endif %}
{% if (project_version is version_compare('2.0.0','>=') or ('stable' in project_version or 'latest' in project_version)) and fabric.consensus_type is defined and fabric.consensus_type == 'etcdraft' %}
- { name: "ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY", value: "/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/server.key" }
- { name: "ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE", value: "/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/server.crt" }
- { name: "ORDERER_GENERAL_CLUSTER_ROOTCAS", value: "[/etc/hyperledger/fabric/artifacts/keyfiles/{{ orderer.org }}/orderers/{{ orderer.name }}.{{ orderer.org }}/tls/ca.crt]" }
{% elif fabric.consensus_type | default('kafka') == 'kafka' %}
- { name: "ORDERER_KAFKA_RETRY_SHORTINTERVAL", value: "1s" }
- { name: "ORDERER_KAFKA_RETRY_SHORTTOTAL", value: "30s" }
- { name: "ORDERER_KAFKA_VERBOSE", value: "true" }
{% endif %}
{% if mutualtls %}
{% if project_version is version('1.1.0','>=') or 'stable' in project_version or 'latest' in project_version %}
- { name: "ORDERER_GENERAL_TLS_CLIENTAUTHREQUIRED", value: "true" }
{% else %}
- { name: "ORDERER_GENERAL_TLS_CLIENTAUTHENABLED", value: "true" }
{% endif %}
- { name: "ORDERER_GENERAL_TLS_CLIENTROOTCAS", value: "[{{ rootca | list | join (", ")}}]" }
{% endif %}
{% if (project_version is version('1.4.0','>=') or 'stable' in project_version or 'latest' in project_version) and fabric.metrics is defined and fabric.metrics %}
- { name: "ORDERER_OPERATIONS_LISTENADDRESS", value: ":8443" }
- { name: "ORDERER_OPERATIONS_TLS_ENABLED", value: "false" }
- { name: "ORDERER_METRICS_PROVIDER", value: "prometheus" }
{% endif %}
{% if fabric.orderersettings is defined and fabric.orderersettings.ordererenv is defined %}
{% for pkey, pvalue in fabric.orderersettings.ordererenv.items() %}
- { name: "{{ pkey }}", value: "{{ pvalue }}" }
{% endfor %}
{% endif %}
{% include './resource.j2' %}
volumeMounts:
- { mountPath: "/etc/hyperledger/fabric/artifacts", name: "task-pv-storage" }
command: ["orderer"]
Deployment config for LoadBalancer
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: {{ orderer.name }}
name: {{ orderer.name }}
spec:
selector:
k8s-app: {{ orderer.name }}
{% if fabric.k8s.exposeserviceport %}
type: LoadBalancer
{% endif %}
ports:
- name: port1
port: 7050
{% if fabric.metrics is defined and fabric.metrics %}
- name: scrapeport
port: 8443
{% endif %}
Interesting thing is, I don't see any Events(on running kubectl describe service orderer1st-orgc) for the services which haven't got their External-IP
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
请分享您的想法。
最佳答案
我的集群出现问题。我不确定它是什么,但是同一组 LoadBalancer 从未用于获取其公共(public) IP。无论您清理所有 pvc、服务和 pod 多少次。我删除了集群并重新创建了一个。在新集群中一切都按预期运行。
所有 LoadBalancer 都获得其公共(public) IP。
关于azure - Kubernetes:AKS 上的某些服务 (LoadBalancer) 的外部 IP 正在等待处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55980984/
core@core-1-94 ~ $ kubectl exec -it busybox -- nslookup kubernetesServer: 10.100.0.10Address 1: 1
我有一个节点错误地注册在集群 B 上,而它实际上为集群 A 服务。 这里“在集群 B 上注册”意味着我可以从 kubectl get node 看到节点来自集群 B。 我想从集群 B 中取消注册这个节
据我所知,Kubernetes 是一个用于部署和管理容器的编排框架。另一方面,Kubernetes Engine 负责集群的伸缩,以及管理容器镜像。 从上面看,它们似乎是同一件事或非常相似。从上面的定
我正在学习 Kubernetes 和 Docker,以启动一个简单的 Python 网络应用程序。我对上述所有技术都不熟悉。 下面是我计划的方法: 安装 Kubernetes。 在本地启动并运行集群。
我了解如何在 kubernetes 中设置就绪探测器,但是是否有任何关于在调用就绪探测器时微服务应实际检查哪些内容的最佳实践?两个具体例子: 一个面向数据库的微服务,如果没有有效的数据库连接,几乎所有
Kubernetes 调度程序是仅根据请求的资源和节点在服务器当前快照中的可用资源将 Pod 放置在节点上,还是同时考虑节点的历史资源利用率? 最佳答案 在官方Kubernetes documenta
我们有多个环境,如 dev、qa、prepod 等。我们有基于环境的命名空间。现在我们将服务命名为 environment 作为后缀。例如。, apiVersion: apps/v1
我有一个关于命名空间的问题,并寻求您的专业知识来消除我的疑虑。 我对命名空间的理解是,它们用于在团队和项目之间引入逻辑边界。 当然,我在某处读到命名空间可用于在同一集群中引入/定义不同的环境。 例如测
我知道角色用于授予用户或服务帐户在特定命名空间中执行操作的权限。 一个典型的角色定义可能是这样的 kind: Role apiVersion: rbac.authorization.k8s.io/v1
我正在学习 Kubernetes,目前正在深入研究高可用性,虽然我知道我可以使用本地(或远程)etcd 以及一组高可用性的控制平面(API 服务器、 Controller 、调度程序)来设置minio
两者之间有什么实际区别?我什么时候应该选择一个? 例如,如果我想让我的项目中的开发人员仅查看 pod 的日志。似乎可以通过 RoleBinding 为服务帐户或上下文分配这些权限。 最佳答案 什么是服
根据基于时间的计划执行容器或 Pod 的推荐方法是什么?例如,每天凌晨 2 点运行 10 分钟的任务。 在传统的 linux 服务器上,crontab 很容易工作,而且显然在容器内部仍然是可能的。然而
有人可以帮助我了解服务网格本身是否是一种入口,或者服务网格和入口之间是否有任何区别? 最佳答案 “入口”负责将流量路由到集群中(来自 Docs:管理对集群中服务的外部访问的 API 对象,通常是 HT
我是 kubernetes 集群的新手。我有一个简单的问题。 我在多个 kubernetes 集群中。 kubernetes 中似乎有多个集群可用。所以 kubernetes 中的“多集群”意味着:
我目前正在使用Deployments管理我的K8S集群中的Pod。 我的某些部署需要2个Pod /副本,一些部署需要3个Pod /副本,而有些部署只需要1个Pod /副本。我遇到的问题是只有一个 po
我看过官方文档:https://kubernetes.io/docs/tasks/setup-konnectivity/setup-konnectivity/但我还是没明白它的意思。 我有几个问题:
这里的任何人都有在 kubernetes 上进行批处理(例如 spring 批处理)的经验?这是个好主意吗?如果我们使用 kubernetes 自动缩放功能,如何防止批处理处理相同的数据?谢谢你。 最
我有一个具有 4 个节点和一个主节点的 Kubernetes 集群。我正在尝试在所有节点中运行 5 个 nginx pod。目前,调度程序有时在一台机器上运行所有 pod,有时在不同的机器上运行。 如
我在运行 Raspbian Stretch 的 Raspberry PI 3 上使用以下命令安装最新版本的 Kubernetes。 $ curl -s https://packages.cloud.g
container port 与 Kubernetes 容器中的 targetports 有何不同? 它们是否可以互换使用,如果可以,为什么? 我遇到了下面的代码片段,其中 containerPort
我是一名优秀的程序员,十分优秀!