- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 kubeadm 创建的裸机 kubernetes (v1.11.0
) 集群,并且工作正常,没有任何问题。与 calico 建立网络,并使用 kubectl taint Nodes 命令将其设为单节点集群。 (要求单节点)。
我需要在主机端口80上运行mydockerhub/sampleweb静态网站镜像。假设运行此kubernetes的ubuntu服务器的IP地址是192.168.8.10。
如何使我的静态网站在 192.168.8.10:80
或本地 DNS 服务器上映射到该网站的主机名上可用? (示例:frontend.sampleweb.local:80
)。稍后我需要在映射到另一个子域的不同端口上运行其他服务。 (示例:backend.sampleweb.local:80
,路由到在端口 8080 上运行的服务)。
我需要知道:
我可以在没有负载均衡器的情况下实现此目的吗?
创建需要哪些资源? (入口、部署等)
集群上需要哪些额外配置? (网络政策等)
如果提供示例 yaml 文件,我们将不胜感激。
我是 kubernetes 世界的新手。我得到了示例 kubernetes 部署(如 sock-shop ),端到端运行没有任何问题。我尝试使用 NodePort 来访问该服务,但我需要在主机上的确切端口 80 上运行它,而不是在不同的端口上运行它。我尝试了很多入口解决方案,但没有成功。
最佳答案
我最近使用过traefik.io配置与您的需求类似的项目。
所以我将展示一个带有 traefik
和入口的基本解决方案。
我专用了一个名为 traefik
的整个命名空间(您可以使用 kube-system
),并创建了一个 kubernetes serviceAccount:
apiVersion: v1
kind: Namespace
metadata:
name: traefik
---
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: traefik
name: traefik-ingress-controller
由入口规则调用的 traefik Controller 需要 ClusterRole 及其绑定(bind):
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: traefik-ingress-controller
rules:
- apiGroups:
- ""
resources:
- services
- endpoints
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: traefik-ingress-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: traefik-ingress-controller
subjects:
- kind: ServiceAccount
namespace: traefik
name: traefik-ingress-controller
traefin Controller 将部署为守护进程集(即根据定义,集群中的每个节点都有一个),并且 Kubernetes 服务专用于该 Controller :
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: traefik
labels:
k8s-app: traefik-ingress-lb
spec:
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
containers:
- name: traefik-ingress-lb
image: traefik
ports:
- name: http
containerPort: 80
hostPort: 80
- name: admin
containerPort: 8080
securityContext:
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
args:
- --api
- --kubernetes
- --logLevel=INFO
---
kind: Service
apiVersion: v1
metadata:
namespace: traefik
name: traefik-ingress-service
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 8080
name: admin
最后一部分要求您为项目中的每个微服务创建一个服务,这里是一个示例:
apiVersion: v1
kind: Service
metadata:
namespace: traefik
name: my-svc-1
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- port: 80
targetPort: 8080
以及将请求转发到正确服务的入口(规则集):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: traefik
name: ingress-ms-1
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: my-address-url
http:
paths:
- backend:
serviceName: my-svc-1
servicePort: 80
在此入口中,我编写了一个主机 URL,这将是集群中的入口点,因此您需要将该名称解析为主 K8S 节点。如果您有更多可以成为主节点的节点,则建议使用负载均衡器(在这种情况下,主机 URL 将是 LB)。
查看 kubernetes.io文档以明确 kubernetes 的概念。另外traefik.io很有用。
希望这对您有帮助。
关于kubernetes - 如何让 Kubernetes Ingress 端口 80 在裸机单节点集群上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357615/
QtCreator 有一个名为“Bare Metal”的插件。裸机是指没有操作系统的计算机。我对 Qt Bare Metal 的开发了解不多。它是一种为裸机系统开发 Qt 的方法吗? Qt 可以在没有
寻找 docker 对裸机的支持,以便它可以加入 swarm 集群。 可能是一台 docker 机器,因此很容易与 docker swarm 集成。 尝试了很多,但找不到可能的解决方案。 最佳答案 你
我正在尝试使用 LLVM 生成用于裸机 ARM Cortex M4 开发的代码。IR 的创建进展顺利,LLVM 正在生成(在我看来)正确的 ARM Thumb ASM。 我购买了 Arm 开发套件来进
我正在尝试了解裸机 C 应用程序的确切工作原理。我编写了自己的调用 __libc_init_array 的启动程序集代码,我看到它遍历 preinit_array 部分并调用其中的所有函数。据我了解,
我一直在使用 C 为 Raspberry Pi 2 编写内核。为此我一直在关注 Valvers和 Baking Pi (用 Assembly 编写)教程来做到这一点。但每次我尝试移植函数以设置一个引脚
裸机(基于管理程序)和主机虚拟化类型有什么区别? 最佳答案 托管虚拟机管理程序的一个著名示例是 Oracle VM VirtualBox。其他包括 VMWare 服务器和工作站、Microsoft V
我目前有Prometheus安装了裸机并作为docker容器运行。我使用它来监视我们的基础架构以及Kubernetes集群。 为了进行此HA设置,我尝试在2个Prometheus实例之前部署代理或查询
我正在尝试在裸机上使用Istio,我想使用所需的最少资源,以便通过Envoy和Cert-Manager获得一个Ingress Controller (也许以后会发展为使用更高级的服务网格功能)。我尝试
我正在尝试设置一个裸机 Kubernetes 集群。我已经设置了基本的集群,没问题,但我似乎无法让 MetalLB 正常工作以向服务公开外部 IP。 我的最终目标是能够部署具有 2 个以上副本的应用程
我想在 Intel Galileo 板上编写一个小的“hello world”裸机 应用程序。使用 UEFI 打印文本(到 UART-1)当然效果很好,但我想“手动”访问 UART,而无需 UEFI
我正在尝试让“hello world”类型的程序在我的 Beagleboard-xm 版本上运行。 C,通过从程序集调用 C puts 函数。 到目前为止,我一直将其用作引用:http://wiki.
我刚开始在 2 个私有(private)云服务器上设置 2 个节点(主从)上的 Kubernetes。我已经安装了它,做了基本的配置,让它运行了一些简单的从 master 到 minion 的 pod
是否有某个指南描述了如何让 LLVM 为 Cortex-M3 发出二进制文件,我可以将其按摩为运行裸机?我花了大量时间在 Windows 和 Ubuntu 上玩 LLVM,但无济于事。我可以得到类似
我目前正在尝试使我编写的程序在裸机臂设备上运行。由于我还没有该设备,因此我尝试使用 qemu 在 Arm 仿真上运行代码。 我使用以下命令运行我的代码:qemu-system-arm -M realv
我已经在本地集群中设置了Elastic + Kibana + metricbeat。但是metricbeat无法连接到Elastic: ERROR pipeline/output.go:100
OS: RHEL7 | k8s version: 1.12/13 | kubespray | baremetal 我部署了一个标准的 kubespray 裸机集群,我试图了解部署 nginx-ingr
我正在使用 gnu sparc 工具链。我有 sparc-ab-elf-gcc 和 sparc-ab-linux-gcc。 (“ab”是处理器名称)。我想在裸机(没有操作系统)上编译一个使用 mall
我是一个 wicket 新手,想从 wicket-examples 中部署简单的知名 helloworld,但没有 IDE、ant 或 maven。我做了什么: web.xml: Wick
我正在尝试在“CentOS Linux release 7.0.1406”上部署 kubernetes 使用“yum install kubernetes” 其中安装了“kubernetes-0.17
所以我知道 ldr/str on arm 的问题数不胜数。也许这是另一个转折(不太可能),或者我只是错过了一些东西(更有可能。) 所以这是裸机,我想在内存中加载/存储一些变量。因为我坚持我想给它一个名
我是一名优秀的程序员,十分优秀!