ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard

参考文章:

Basic operations

Accessing Dashboard

【K8S 四】部署 kubernetes-dashboard 插件

原文:

现在您已经安装了 Charmed Kubernetes 集群,您可以用它做什么?此页面详细介绍了一些基本的集群操作,包括如何检查集群的状态并测试它是否与内置的演示部署一起工作。

如果您已经熟悉这一点,您可能仍想查看下一步以获取有关操作 Kubernetes 的更多有用指南。

安装和配置kubectl

您将需要 kubectl 才能使用您的 Kubernetes 集群。如果尚未安装,可以通过 snap 包轻松添加:

sudo snap install kubectl --classic

拷贝配置文件到本机:

juju scp kubernetes-master/0:config ~/.kube/config

其他平台及安装方式请查看Kubernetes文档。

用于访问新部署集群的配置文件存储在集群本身中,安装完成后即可使用。您应该使用以下命令来检索它(如果 kubectl 安装后没有创建 .kube 目录,则创建一个 .kube 目录):

注意:如果您有多个集群,则需要管理配置文件,而不仅仅是替换它。有关管理多个集群的更多信息,请参阅 Kubernetes 文档。

您可以验证 kubectl 是否配置正确,并且可以通过运行以下命令查看集群:

kubectl cluster-info

现在您可以在 Kubernetes 集群中运行 pod:

kubectl create -f example.yaml

列出集群中的所有 pod:

kubectl get pods

列出集群中的所有服务:

kubectl get services

访问 Kubernetes 仪表板

要检查是否一切正常,您可能需要登录 Kubernetes 仪表板。

推荐的方法是使用内置代理服务,运行如下:

kubectl proxy

仪表板的 URL 将是

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

对于 1.16 之前的版本,仪表板 URL 将是

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

在仪表板地址处打开浏览器。您将看到一个身份验证屏幕:

ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard_第1张图片

您需要使用有效用户登录仪表板。最简单的方法是选择您的 kubeconfig 文件,但为了将来的管理,您应该设置基于角色的访问控制。

ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard_第2张图片

使用入口

kubernetes-worker charm支持部署 NGINX 入口控制器。 Ingress 允许从 Internet 访问在集群内运行 Web 服务的容器。

首先使用以下 juju 命令允许 Internet 访问 kubernetes-worker charm:

juju expose kubernetes-worker

在 Kubernetes 中,工作负载是使用 pod、服务和入口定义来声明的。默认情况下为您提供了一个入口控制器,并部署到集群的默认命名空间中。如果一个不可用,您可以使用以下命令部署它:

juju config kubernetes-worker ingress=true

入口资源是到您的容器的 DNS 映射,通过端点路由。

配置 DNS

Charmed Kubernetes 1.14+ 默认启用了 CoreDNS,它允许 Kubernetes 中的 pod 与其他 pod 或服务通过名称进行通信。

如果您想禁用 DNS(例如,部署您自己的自定义 DNS 解决方案),您可以使用:

juju config kubernetes-master dns-provider=none

要部署自定义 DNS 配置,首先禁用charm管理的 DNS 提供程序(见上文)。部署完 DNS pod 后,不要忘记使用 DNS 服务的 IP 配置 kubelet:

juju config kubernetes-worker kubelet-extra-config="{clusterDNS: ['10.152.183.123']}"

运行打包的示例

作为不熟悉 Kubernetes 的用户的示例,我们打包了一个操作来部署示例和清理自身。

此操作执行以下步骤:

  • 它创建了一个名为“microbots”的部署,其中包含在操作运行期间定义的多个副本。
  • 它还创建了一个名为“microbots”的服务,它使用所有“microbots”pod 绑定一个“端点”。
  • 最后,它将创建一个入口资源,该资源指向一个 nip.io 域以模拟适当的 DNS 服务。

要在 Kubernetes 集群中部署 microbot Web 应用程序的 3 个副本,请运行以下命令:

juju run-action kubernetes-worker/0 microbot replicas=3 --wait

这应该会在几分钟后产生类似于以下内容的输出(您的 FQDN 将有所不同,并且包含云实例的地址。)

id: 4d4a2245-e544-45d1-886d-b828ccf72c47
  results:
    address: microbot.52.87.186.136.nip.io
  status: completed
  timing:
    completed: 2019-03-22 15:00:39 +0000 UTC
    enqueued: 2019-03-22 15:00:34 +0000 UTC
    started: 2019-03-22 15:00:37 +0000 UTC
  unit: kubernetes-worker/0

此时,您可以检查集群以观察上线的工作负载。

列出pods

 kubectl get pods

NAME READY STATUS RESTARTS AGE
microbot-5b9864df4d-q7b94 1/1 Running 0 2m31s
microbot-5b9864df4d-rx9b2 1/1 Running 0 2m31s
microbot-5b9864df4d-x7ppr 1/1 Running 0 2m31s

列出服务和端点

kubectl get services,endpoints
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.152.183.1            443/TCP   112m
service/microbot     ClusterIP   10.152.183.62           80/TCP    3m50s

NAME                   ENDPOINTS                                   AGE
endpoints/kubernetes   10.95.195.54:6443                           112m
endpoints/microbot     10.1.77.12:80,10.1.77.13:80,10.1.77.14:80   3m50s

列出入口资源

kubectl get ingress
NAME               HOSTS                           ADDRESS   PORTS   AGE
microbot-ingress   microbot.52.87.186.136.nip.io             80      5m36s

当所有 pod 都列为 Running 时,您就可以访问 ingress 列表的 HOSTS 列中列出的地址了。

注意:在初始应用程序部署过程中看到 502/503 错误是正常的

当您刷新页面时,您将看到一个 microbot 网页,由其中一个 microbot 副本 pod 提供服务。刷新将向您显示另一个具有不同主机名的微型机器人,因为请求在副本之间进行了负载平衡。

清理示例

还有一个清理microbot应用程序的操作。当您使用完 microbot 应用程序后,您可以通过一个 Juju 操作将它们从 Pod 中删除:

juju run-action kubernetes-worker/0 microbot delete=true

如果您不再需要让您的worker访问 Internet,请记住取消暴露 kubernetes-worker 的charm:

juju unexpose kubernetes-worker

要了解有关 Kubernetes Ingress 以及如何配置超出默认值(例如 TLS 和 websocket 支持)的ngix Ingress Controller 的更多信息,请查看 github 上的 nginx-ingress-controller项目。

下一步

现在您的 Charmed Kubernetes 集群已启动并运行,以下是您可能希望尝试的其他一些事项的一些建议:

  • 添加存储
  • 扩展集群
  • 检查日志
  • 停用集群
  • 探索插件
  • 需要帮助或想聊天?保持联系!

其他资源

  • Kubernetes 用户指南
  • Charmhub.io 上的 Charmed Kubernetes页面
  • bundle源
  • 错误追踪器

以下是实际操作:

开始根据Basic operations,使用kubectl proxy模式,访问dashboard 时,出现以下问题:

kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$' --port=8888

访问的dashboard url为:(注,在nat里用8888映射内网8888端口)

http://localhost:8888/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

出现以下提示:
ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard_第3张图片

经过查资料,原来kubernetes dashboard访问可以通过下面的方式:
1 kubectl proxy
2 kubectl port-forward
3 NodePort

注: 从 1.7 开始,dashboard 只允许通过 https 访问,如果使用 kube proxy 则必须监听 localhost 或 127.0.0.1。node port 只适用于开发环境而不适用于生产环境。

所以只能改用kubectl port-forward ,命令如下:

kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard 8888:443 --address 0.0.0.0

#将dashboard的服务端口443转发到8888端口,并运行外网访问;

访问的页面为:

https://localhost:8888

注:由于是在maas服务器10.0.0.3上执行的kubectl,且nat服务器上做了公网地址端口8888到私网地址端口8888的映射,所以实际访问的是:

https://nat公网ip:8888

ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard_第4张图片

在前文中,我们拷贝过配置文件,token就在这个配置文件中:

juju scp kubernetes-master/0:config ~/.kube/config
cat ~/.kube/config

输出类似:

token: admin::nk39GlZLNJdg123456huAJkg0OI8L6I9

将这个token填入:

ubuntu20.04下使用juju+maas环境部署k8s-8-基本操作-1-访问 kubernetes dashboard_第5张图片

你可能感兴趣的:(juju,maas,k8s,kubernetes)