我是k8s的新手 我的部署文件低于
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-deployment
spec:
replicas: 3
selector:
matchLabels:
component: web
template:
metadata:
labels:
component: web
spec:
containers:
- name: jenkins
image: jenkins
ports:
- containerPort: 8080
- containerPort: 50000
我的服务文件如下:
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
name: http
selector:
component: web
我的入口文件是
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: jenkins-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: jenkins.xyz.com
http:
paths:
- path: /
backend:
serviceName: jenkins-svc
servicePort: 80
我正在使用nginx入口项目,并且我的集群是使用具有3个节点的kubeadm创建的 nginx ingress
我首先运行了强制性命令
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
当我尝试打jenkins.xyz.com时,它不起作用 当我尝试命令
kubectl get ing
ing资源没有获得分配给它的IP地址
答案 0 :(得分:1)
入口资源不过是反向代理(Ingress controller
)的配置。
Ingress
没有分配IP地址是正常的。
您需要做的是连接到入口控制器实例。
为此,您需要了解它们如何在群集中公开。
考虑到您声称用来运行入口控制器的YAML,没有迹象表明会暴露给外部网络。
您至少需要定义一个Service
来公开您的控制器(如果放置群集的提供程序支持它,则可以成为负载平衡器),您可以使用HostNetwork: true
或{{1 }}。
要使用最新选项(NodePort
),可以应用以下YAML:
我建议您阅读Ingress文档页面,以更清楚地了解所有这些工作原理。
https://kubernetes.io/docs/concepts/services-networking/ingress/
答案 1 :(得分:0)
要访问您的本地Kubernetes集群POD ,需要创建一个NodePort
。 NodePort
将使用其公用IP和端口在每个节点上发布您的服务。然后,您可以使用任何群集IP和分配的端口访问该服务。
在Kubernetes中定义NodePort :
apiVersion: v1
kind: Service
metadata:
name: nginx-service-np
labels:
name: nginx-service-np
spec:
type: NodePort
ports:
- port: 8082 # Cluster IP, i.e. http://10.103.75.9:8082
targetPort: 8080 # Application port
nodePort: 30000 # (EXTERNAL-IP VirtualBox IPs) i.e. http://192.168.50.11:30000/ http://192.168.50.12:30000/ http://192.168.50.13:30000/
protocol: TCP
name: http
selector:
app: nginx
在Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)上查看带有源代码的完整示例。
如果您想从以下方面的服务网格体系结构中受益,也可以用 Istio 替换nginx入口控制器:
请参见Installing Istio in Kubernetes under VirtualBox (without Minikube)。