我基本上希望通过URL从外部访问Nginx hello页面。我已经为运行kubernetes和Nginx ingress:vps的v服务器的子域创建了一个(工作)a记录。我的域名。通用域名格式
我使用以下教程在CoreOS上通过kubeadm将Kubernetes安装为单节点集群:https://kubernetes.io/docs/setup/independent/install-kubeadm/, https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/,和使用https://kubernetes.github.io/ingress-nginx/deploy/#bare-金属。
我还在 /etc/hosts文件中添加了以下条目:
31.214.xxx.xxx vps.my-domain.com
(xxx替换为服务器IP的最后三位数字)
我使用以下文件来创建部署、服务和入口:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- name: http
containerPort: 80
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
selector:
run: my-nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/ssl-redirect: "False"
spec:
rules:
- host: vps.my-domain.com
http:
paths:
- backend:
serviceName: my-nginx
servicePort: 80
描述ing的输出:
core@vps ~/k8 $ kubectl describe ing
Name: my-nginx
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
vps.my-domain.com
my-nginx:80 (<none>)
Annotations:
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"extensions/v1beta1",...}
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/ssl-redirect: False
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal UPDATE 49m (x2 over 56m) nginx-ingress-controller Ingress default/my-nginx
虽然我可以使用nodeip和端口80卷曲Nginx hello页面,但它在VM外部不起作用<代码>无法连接到vps。我的域名。com端口80:连接被拒绝
我是忘了什么还是配置不对?任何帮助或提示都将不胜感激!
谢谢你
编辑:
访问“vps.my domain.com:30519”会显示nginx欢迎页面。但在配置中,我指定了端口:80。我从get services的输出中获得了端口:
core@vps ~/k8 $ kubectl get services --all-namespaces | grep "my-nginx"
default my-nginx ClusterIP 10.107.5.14 <none> 80/TCP 1h
我还通过添加
externalIPs:
- 31.214.xxx.xxx
到my-nginx服务。但这不是它应该如何工作的,对吧?在kubernetes和ingres-nginx的教程和示例中,它总是在没有外部IP的情况下工作。入口规则现在也不起作用(例如,如果我设置了 /test的路径)。
所以很明显我错过了一部分:负载均衡器。我不知道为什么这些说明中没有提到这是一个要求。但是我遵循了这个教程:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metallb,现在一切都正常了。
由于metallb需要多个ip地址,您必须使用子网\32:31.214.xxx.xxx\32
列出您的单个ip地址
我有多个运行RDP应用程序的部署,它们都是通过ClusterIP服务公开的。我的k8s群集中有nginx ingress controller,为了允许tcp,我在nginx ingress controller部署中添加了tcp services configmap标志,并为其创建了configmap,如下所示 这将公开“rdp-service1”服务。我还有10个这样的服务需要在相同的端口号上
我正在使用kubeadm工具创建kubernetes v1.7集群。 在我的主机上公开服务“echoheaders”非常简单。库贝。com使用外部ip 创建正在运行的部署: 从部署中公开服务: 从web浏览器访问: 现在,我想使用本指南中基于角色的入口控制器公开相同的服务echoheaders:https://github.com/kubernetes/ingress/tree/master/ex
如何使用入口控制器本身公开UI而不创建外部LoadBalancer?
我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错
apachectl是Apache HTTP服务器的前端程序。其设计意图是帮助管理员控制Apache httpd后台守护进程的功能。 apachectl脚本有两种操作模式。首先,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数。其次,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适当
我一直在尝试使用Traefik作为Google云容器引擎的入口控制器。 我让我的超文本传输协议部署/服务启动并运行(当我用普通的负载均衡器公开它时,它回答得很好)。 然后我删除了LoadBalancer,并遵循本教程:https://docs.traefik.io/user-guide/kubernetes/ 因此,我得到了一个新的traefik入口控制器部署和服务,以及一个traefik ui入