我有一个k8s集群,我在其中部署了一些容器。
可以通过microk8s.hostname.internal访问群集。
现在我部署了一个应用程序/容器,可以在这里访问:microk8s.hostname.internal/myapplication在服务和入口的帮助下。
这个效果很好。
现在我想部署另一个应用程序/容器,但我希望它可以像这样访问:otherapplication.microk8s.hostname.internal.
我该怎么做呢?
当前在microk8s中安装的插件:
aasa@bolsrv0891:/snap/bin$ microk8s status
microk8s is running
high-availability: no
addons:
enabled:
dashboard # (core) The Kubernetes dashboard
dns # (core) CoreDNS
helm # (core) Helm - the package manager for Kubernetes
helm3 # (core) Helm 3 - the package manager for Kubernetes
ingress # (core) Ingress controller for external access
metrics-server # (core) K8s Metrics Server for API access to service metrics
更新1:如果我portforward到我的服务,它的工作。我已经尝试了这个入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
namespace: jupyter-notebook
annotations:
kubernetes.io/ingress.class: public
spec:
rules:
- host: jupyter.microk8s.hostname.internal
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: jupyter-service
port:
number: 7070
但我无法访问它,也无法ping它。无法找到该页面的服务器IP地址。
我的服务看起来像这样:
apiVersion: v1
kind: Service
metadata:
name: jupyter-service
namespace: jupyter-notebook
spec:
ports:
- name: 7070-8888
port: 7070
protocol: TCP
targetPort: 8888
selector:
app: jupyternotebook
type: ClusterIP
status:
loadBalancer: {}
我当然可以ping microk8s.hostname.internal。
更新2:
当前工作的入口具有以下上下文路径:内部/我的应用程序看起来像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: public
nginx.ingress.kubernetes.io/rewrite-target: /$1
name: jupyter-ingress
namespace: jupyter-notebook
spec:
rules:
- http:
paths:
- path: "/jupyter-notebook/?(.*)"
pathType: Prefix
backend:
service:
name: jupyter-service
port:
number: 7070
这可以通过访问microk8s.hostname.internal/jupyter-notebook从外部访问。
2条答案
按热度按时间nbysray51#
要做到这一点,您必须配置一个kube服务,kube入口和配置您的DNS。
在
hosts
文件中添加条目将允许DNS解析为otherapplication.microk8s.hostname.internal
您可以使用
dnsmasq
以允许通配符解析,例如*.microk8s.hostname.internal
您可以使用
nslookup
或dig
测试dns重新解析j8ag8udp2#
您可以复制相同的入口和更新名称,它和主机内,这是所有的变化,你需要的。
供参考:
您可以使用入口创建子域,只需更新入口中的Host并添加必要的serviceName和servicePort即可将流量路由到特定服务。
请随意附加必要的字段,以及注解(如果有),从为您工作的现有入口添加到上述入口。
如果您在本地运行它,则可能必须将IPMap到**/etc/hosts文件中的子域 *
/等/主机