【发布时间】:2019-05-16 08:40:37
【问题描述】:
我正在为我们销售的应用程序设置开发环境。
由于我们使用此环境进行主动开发,因此有必要或多或少地像客户给定的环境一样构建它。 客户使用 Kubernetes 和 traefik。所以我们在 Dev 也是这样做的。
幸运的是,我们获得了用于客户环境的原始 YAML 文件,因此我们只需稍作修改即可使用它们。
在我们设置好 Ingress 和 Traefik Ingress Controller 之后,我假设 kubernetes 将打开系统上的给定端口,因此可以从外部访问应用程序。但它没有,443 和 80 端口没有监听。
我仔细检查了配置(因为我们可以访问客户集群,所以我可以比较他们的环境和我们的环境) - 但一切看起来都完全一样,尽管有 IP 地址和命名空间的名称。
在 traefik 控制器 pod 的日志中,我在这里看不到任何问题。只有我看到一些 TLS 证书错误。 有时在我的测试中,我在打开端口 80 时看到“绑定”权限被拒绝,但目前没有。
我(和客户)将 traefik toml 文件定义为配置映射,并将其作为卷添加到 /opt/conf/traefik.toml 到 pod。该路径作为参数提供给 pod,根据日志,它使用文件。
运行 kubernetes 的服务器是 Windows Server 2016 主机上的 Ubuntu Server 18.04 Hyper-V 机器。 Kubernetes 是使用 apt-get(不是 snap)部署的,集群是使用 kubeadm 设置的。
这是集群配置:
root@srv-app-003:~# kubeadm config view
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta1
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.14.1
networking:
dnsDomain: cluster.local
podSubnet: 192.168.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
这里是节点配置:
root@srv-app-003:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
srv-app-003 Ready master 12d v1.14.1 192.168.6.203 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.9.2
部署有 4 个 Pod,它们都在正常运行(另外,我可以直接从 Pod 本地 curl 网站)。
我把一些重要的yaml文件放在这里:https://gitlab.com/group15/my-awesome-project
如果您需要更多信息(服务帐户、角色(绑定)等...),请告诉我
主要目标是一个正在运行的开发环境,它可以通过 192.168.6.0 网络中的 HTTP(s) 访问。 我还没有让它运行。请帮帮我,我是不是做错了什么?
【问题讨论】:
-
因此,您并不是说您创建的部署实际上是否有正在运行的 pod。或者他们正在等待。只有一个节点,您可能有一个 taint 会阻止 pod 在主节点上运行。
-
哦,对不起,你是对的。我将编辑帖子并添加它。这些部署有 4 个 Pod,它们都在正常运行(另外,我可以直接从 Pod 本地卷曲网站)。我的设置只有一台机器结合了主节点和节点(是的,我必须为此调整污点)。
标签: kubernetes yaml kubectl traefik traefik-ingress