我正在为我们销售的应用程序设置开发环境。
由于我们使用此环境进行主动开发,因此有必要或多或少地像客户给定的环境一样构建它。客户使用 Kubernetes 和 traefik。所以我们也在开发中这样做。
幸运的是,我们获得了用于客户环境的原始 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 本地卷曲网站)。
我在这里放置了一些重要的 yaml 文件:https ://gitlab.com/group15/my-awesome-project
告诉我您是否需要更多(服务帐户、角色(绑定)等...)
主要目标是一个正在运行的开发环境,它可以通过 192.168.6.0 网络中的 HTTP(s) 访问。我还没有让它运行。请帮助我,我做错了什么吗?