公开kubernetes仪表板

时间:2019-08-30 12:21:15

标签: kubernetes kubectl

我已经为kubernetes dashboard应用了Yaml。

现在,我想使用服务器的公共IP https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/#objectives

公开此服务。

但是我的集群上没有服务/部署:

$ sudo kubectl get services kubernetes
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   63d
$ sudo kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE

我做错了什么?

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

您运行的命令是在默认名称空间中获取对象。

但是,仪表板部署在 kube-system 名称空间上。

kubectl -n kube-system get services kubernetes
kubectl -n kube-system get deployment

我根据您共享的kubernetes dashboard链接向您提供此信息。即YAML file

答案 1 :(得分:0)

好的,谢谢,现在我有了正确的名字:

$insertion = $connection->prepare("INSERT INTO products_tbl(product_name, product_manufacturer, product_category)
                                   VALUES(:productNameInput,
                                          IFNULL(:productManufacturerInput, DEFAULT(product_manufacturer)),
                                          IFNULL(:productCategoryInput, DEFAULT(product_category))
                                          )
                                   ");
$insertion->execute($productDataInput);

但是我仍然无法公开该服务

sudo kubectl -n kube-system get deployment
NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
calico-kube-controllers   1/1     1            1           63d
coredns                   2/2     2            2           63d
kubernetes-dashboard      1/1     1            1           103m
tiller-deploy             0/1     1            0           63d

如上所述here

答案 2 :(得分:0)

因此,为了重现并展示其工作原理-我在GKE上产生了新的新簇。

让我们看看在应用仪表板Yaml之后拥有什么:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created


kubectl get deployment kubernetes-dashboard -n kube-system
NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-dashboard   1         1         1            1           3m22s


kubectl get services kubernetes-dashboard -n kube-system
NAME                   TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes-dashboard   ClusterIP   10.0.6.26    <none>        443/TCP   5m1

kubectl describe service kubernetes-dashboard -n kube-system
Name:              kubernetes-dashboard
Namespace:         kube-system
Labels:            k8s-app=kubernetes-dashboard
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard"...
Selector:          k8s-app=kubernetes-dashboard
Type:              ClusterIP
IP:                10.0.6.26
Port:              <unset>  443/TCP
TargetPort:        8443/TCP
Endpoints:         10.40.1.5:8443
Session Affinity:  None
Events:            <none>

在此deployment期间: 1)已创建kubernetes-dashboard部署。请注意,它是使用k8s-app=kubernetes-dashboard label创建的。 2)kubernetes-dashboard service已创建并使用k8s-app=kubernetes-dashboard [选择器](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

基本上,当您收到这样的错误时-这是预期的。因为kubectl expose deployment kubernetes-dashboard -n kube-system试图使用kubernetes-dashboard名称创建新服务。 只是为了使用它-您可以轻松地公开相同内容,但可以使用其他服务名称,例如:

kubectl expose deployment kubernetes-dashboard -n kube-system --name kube-dashboard-service2
service/kube-dashboard-service2 exposed

请注意,默认kubernetes-dashboard服务是使用ClusterIP类型创建的-因此您现在就可以访问它
1)集群 2)从本地计算机使用kubectl代理

$ kubectl proxy
In browser: http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

如果要公开相同内容,可以使用: 1)Ingress

2)Nodeport service type  用2个字词:在clusterIP --> Nodeport期间编辑kubectl -n kube-system edit service kubernetes-dashboard类型,然后使用https://[node_ip]:[port]

访问仪表板

更多详细的文章在这里:How To Access Kubernetes Dashboard Externally

3)Loadbalancer service type。这是特定于云的功能,因此仅适用于云提供商

  

来自外部负载均衡器的流量定向到后端   豆荚。云提供商决定如何进行负载均衡。

     

某些云提供商允许您指定loadBalancerIP。在那些   在这种情况下,负载均衡器是根据用户指定的   loadBalancerIP。如果未指定loadBalancerIP字段,则   用临时IP地址设置loadBalancer。如果您指定一个   loadBalancerIP,但您的云提供商不支持该功能,   您设置的loadbalancerIP字段将被忽略。