在 pod 中访问应用程序最常用的方法是使用 Service。
创建后,Service 对象被分配一个唯一的 IP 地址 (ClusterIP),该地址在 Service 对象的整个生命周期内保持不变。 Pod 可以使用此 ClusterIP 和端口来访问标签与服务选择器匹配的 pod 子集。当多个 pod 匹配时,Service 会通过循环原则选择其中一个作为目的地。
例如:
您可以使用 kubectl expose 为您的 2 个 nginx 副本创建服务:
$ kubectl expose deployment/my-nginx
service "my-nginx" exposed
这相当于kubectl create -f nginx-svc.yaml
nginx-svc.yaml 内容为:
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
如何检查您的服务:
$ kubectl get svc my-nginx
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx 10.0.162.149 <none> 80/TCP 21s
在您的应用程序的某些部分,您可能希望将服务公开到外部 IP 地址。 Kubernetes 支持两种方式:NodePorts 和 LoadBalancers。
NodePort 模式在所有集群节点上保留一个端口,并将来自该端口的流量转发到与选择器匹配的 pod。
在 LoadBalancer 模式下,Service 创建云负载均衡器并将流量从负载均衡器转发到与选择器匹配的 pod。
您可以在文档Connecting Applications with Services 中阅读更多相关信息
为避免手动创建所有这些对象,您可以使用 helm 基于特定应用程序的模板生成和运行对象。这是 jupiter notebook 的 helm 存储库:
https://github.com/UNINETT/helm-charts
Kubernetes 具有称为 Dashboard 的 WebUI。默认情况下它不会部署,但在您需要时很容易部署。
要部署 Dashboard,请执行以下命令:
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
要从本地工作站访问 Dashboard,您必须为 Kubernetes 集群创建一个安全通道。运行以下命令:
$ kubectl proxy
现在访问仪表板:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/。
要了解如何创建示例用户并登录,请遵循创建 sample user guide。
从 1.7 版开始,Dashboard 默认拥有一组最小权限,并且只能通过 HTTPS 访问。 Access Control guide 可以帮助您扩展用户权限。
如果您受限于操作系统版本,您可以免费使用Oracle VirtualBox for minikube。