如何在CentOS 8上安装MicroK8s Kubernetes集群


您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南










MicroK8s是经过CNCF认证的上游Kubernetes部署,可以完全在您的工作站或边缘设备上运行,作为一个快照,它可以原生运行所有Kubernetes服务(即没有虚拟机),同时打包所需的整套库和二进制文件。您可以下载几百兆字节,而删除MicroK8则一无所有来源: Ubuntu页面..

CNCF运行认证的Kubernetes一致性计划以确保一致性,从而确保从一个Kubernetes安装到下一个Kubernetes安装之间的顺畅互操作性。软件一致性确保每个供应商的Kubernetes版本都支持所需的API,开源社区版本也是如此。 CNCF网站..

在本指南中,我们将一起完成以下工作:

  • 使用MicroK8s安装Kubernetes集群
  • 启用核心Kubernetes附加组件,例如dns和仪表板
  • 部署Pod并添加新节点
  • 配置存储
  • 启用日志记录,Prometheus和Grafana监视
  • 配置注册表

我们需要的只是一个支持Snap的Linux发行版,在本指南中,我们将继续使用CentOS8。让我们开始吧。

步骤1:更新服务器并安装快照

为了在一个干净整洁的平台上开始,我们将更新服务器以获取最新的补丁程序和软件,添加Epel Repository,然后安装Epel的snap软件包。运行以下命令以实现此目的。

sudo dnf install epel-release -y
sudo dnf update
sudo dnf -y install snapd

禁用SELinux

如果您使SELinux处于强制模式,请将其关闭或使用许可模式。

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

软件包安装完成后,需要按以下方式启用管理主快照通讯套接字的systemd单元:

sudo systemctl enable --now snapd.socket

此外,要启用经典快照支持,请输入以下内容在/ var / lib / snapd / snap和/ snap之间创建符号链接,然后将snap添加到PATH变量中

sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/mysnap.sh

之后,请注销并重新登录,或者重新启动系统以确保snap的路径正确更新。现在将安装snap。要对其进行测试,我们可以搜索软件包并查看其是否按预期工作:

$ snap find microk8s

Name      Version  Publisher   Notes    Summary
microk8s  v1.19.0  canonical✓  classic  Lightweight Kubernetes for workstations and appliances

步骤2:在CentOS 8上安装MicroK8

现在我们的服务器已经更新并且已经安装了Snap,我们可以轻松地获取MicroK8并开始以容器的方式使用它来测试和运行我们的应用程序。要安装MicroK8,请运行下面的简单snap命令,我们将被设置。是Snappy的美丽。

$ sudo snap install microk8s --classic
microk8s v1.19.0 from Canonical✓ installed

如果不添加–classic开关,则会出现错误,请添加它。

为了能够以sudo用户身份运行microk8s命令,您必须将该用户添加到microk8s组中,然后注销并重新登录,如下所示添加用户:

sudo usermod -aG microk8s $USER
sudo chown -f -R $USER ~/.kube

Onc权限已实现,请注销并重新登录。

之后,我们可以查看已安装的快照

$ snap list

Name      Version      Rev   Tracking       Publisher   Notes  
core      16-2.45.3.1  9804  latest/stable  canonical✓  core   
microk8s  v1.19.0      1668  latest/stable  canonical✓  classic

为了以后添加新节点,我们将需要打开服务器上的端口(如果您在服务器中运行防火墙,则适用),如下所示添加端口:

sudo firewall-cmd  --permanent --add-port={10255,12379,25000,16443,10250,10257,10259,32000}/tcp
sudo firewall-cmd --reload

步骤3:在CentOS 8上管理MicroK8

MicroK8s现在已安装在我们的服务器上,可以开始滚动了。要管理MicroK8s(即启动,状态,停止,启用,禁用,列出节点等),只需执行以下操作:

#####Check Status#####

$ microk8s status

microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none

#####Stop MicroK8s#####

$ microk8s stop

stop of [microk8s.daemon-apiserver microk8s.daemon-apiserver-kicker microk8s.daemon-cluster-agent microk8s.daemon-containerd microk8s.daemon-contr…Stopped

#####Start MicroK8s#####

$ microk8s start

Started.

#####List MicroK8s Nodes#####

$ microk8s kubectl get nodes

NAME     STATUS   ROLES    AGE    VERSION
master   Ready       2m6s   v1.19.0-34+1a52fbf0753680

#####Disable MicroK8s#####

$ sudo snap disable microk8s

#####Enable MicroK8s#####

$ sudo snap enable microk8s

很棒的东西!我们的MicroK8s已经安装好并且可以毫无疑问地响应我们的命令,让我们继续下一步。

步骤4:部署Pod并启用仪表板

在这里,我们将继续部署Pod,并使仪表板能够以良好的视觉效果简化我们的工作,让我们按如下所示部署示例Redis Pod:

$ microk8s kubectl create deployment my-redis --image=redis
deployment.apps/my-redis created

列出已部署的Pod

$ microk8s kubectl get pods --all-namespaces

NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE  
kube-system   calico-kube-controllers-847c8c99d-f7zd2   1/1     Running   2          3h48m
kube-system   calico-node-xxhwx                         1/1     Running   2          3h48m
default       my-redis-56dcdd56-tlfpf                   1/1     Running   0          70s

而且我们最近的Redis Pod正在启动并发出警报!

如果您希望登录到redis实例,请按照以下说明进行操作:

$ microk8s kubectl exec -it my-redis-56dcdd56-tlfpf -- bash
[email protected]:/data#

要检查Pod的日志,请确保包含其各自的名称空间,因为它只会检查“默认”名称(如果未提供)。

$ microk8s kubectl logs my-redis-56dcdd56-tlfpf -n default

1:C 14 Sep 2020 12:59:32.350 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 14 Sep 2020 12:59:32.350 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 14 Sep 2020 12:59:32.350 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 14 Sep 2020 12:59:32.352 * Running mode=standalone, port=6379.
1:M 14 Sep 2020 12:59:32.352 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower 
value of 128.
1:M 14 Sep 2020 12:59:32.352 # Server initialized
1:M 14 Sep 2020 12:59:32.352 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
1:M 14 Sep 2020 12:59:32.352 * Ready to accept connections

接下来,让我们启用仪表板和dns来欣赏我们的工作负载,如下所示。

$ microk8s enable dns dashboard

Enabling Kubernetes Dashboard
Enabling Metrics-Server
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created

我们需要一个令牌才能登录到仪表板。要获取令牌,请发出以下两个命令。

$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token

Name:         default-token-gnj26
Namespace:    kube-system
Labels:       
Annotations:  kubernetes.io/service-account.name: default
              kubernetes.io/service-account.uid: 40394cbe-7761-4de9-b49c-6d8df82aea32

Type:  kubernetes.io/service-account-token

Data

ca.crt:     1103 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6InBOVTc3NVd5ZDJHT1FYRmhWZFJ5ZlBVbVpMRWN5M1BEVDdwbE9zNU5XTDgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLWduajI2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI0MDM5NGNiZS03NzYxLTRkZTktYjQ5Yy02ZDhkZjgyYWVhMzIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.vHqwKlMGX650dTuChwYWsPYZFH7zRhRjuh-BEPtgYYPfrayKU08DSC5v3CixkrZH-wXZydOPit50H5SfCZPwY1TqDNCFgbz--0GnB7GhgwSoK4laXpr42Al7EBgbMWfUEAtnWXVkObUYzF31Sfhac2AnPIBp2kFlqJt8M03uoperJuFLl5x-fDacGrcXTQqvY2m5K1oE4zE38vtaJXdzgNfBMbtUrMneihoFczzOzwPLxzJJ4eZ7vAz1svG6JHO5PDDYbV0gded0egoLQkhu4Saavf8ILUjupJdYywA2VCqB6ERrrElMBHs5tYfckfyi4f6eR59_EZkf7-neCDWTAg

复制令牌并将其保存在安全的地方。

接下来,您需要连接到仪表板服务,虽然MicroK8s快照将在您的本地网络上有一个IP地址(kubernetes-dashboard服务的群集IP),但是您也可以通过将其端​​口转发到一个免费的仪表板来访问仪表板。在您的主机上具有:

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard --address 0.0.0.0 30560:443

请注意,我们添加了–address 0.0.0.0,以便可以从任何IP而不是服务器上的本地(127.0.0.1)访问它。现在,您可以通过端口30560访问仪表板。请确保启用此端口在防火墙上,以防您在环境中进行设置。

sudo firewall-cmd --permanent --add-port=30560/tcp
sudo firewall-cmd --reload

现在打开浏览器并将其指向服务器的ip或FQDN,即https://[ip or FQDN]30560.并且应该显示以下登录页面。您会注意到它需要一个令牌或Kubeconfig文件。我们已经如上生成了一个令牌(获取令牌)。只需将其复制并粘贴到登录页面上即可。

粘贴令牌

如何在CentOS 8上安装MicroK8s Kubernetes集群

而你应该被引入

如何在CentOS 8上安装MicroK8s Kubernetes集群

步骤5:将节点添加到群集

到目前为止,我们一直在开发一个单节点(服务器),如果您希望在两个或多个节点(服务器)上扩展和分发应用程序,那么您将可以正常使用。要向集群中添加另一个节点,您可以只需在其上安装Snap和MicroK8S,因为它已在步骤1和步骤2中介绍过。在新的CentOS 8服务器上按照步骤1和步骤2进行操作,然后继续以下操作。

如果Firewalld正在运行,请允许端口

node-01 ~ $ export OPENSSL_CONF=/var/lib/snapd/snap/microk8s/current/etc/ssl/openssl.cnf
node-01 ~ $ sudo firewall-cmd --add-port={25000,10250,10255}/tcp --permanent
node-01 ~ $ sudo firewall-cmd --reload

在主节点(我们首先安装的节点)上,执行以下命令以获取我们的令牌并加入命令

$ microk8s add-node

From the node you wish to join to this cluster, run the following:
microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53

从上面可以看到,我们现在可以在工作节点上运行该命令以加入集群,不要犹豫,复制该命令,登录到工作节点并执行,如下所示:

在新节点上,执行以下命令

node-01 ~ $ microk8s join 172.26.24.237:25000/dbb2fa9e23dfbdda83c8cb2ae53eaa53

Contacting cluster at 172.26.16.92
Waiting for this node to finish joining the cluster. ..

步骤6:配置存储

MicroK8s带有一个内置存储,只需启用它即可。要启用该存储,请将/ lib86目录添加到LD_LIBRARY_PATH环境变量的路径,然后在主节点上按以下方式启用该存储:

$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/lib64"
$ microk8s enable storage

deployment.apps/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
serviceaccount/microk8s-hostpath created
clusterrole.rbac.authorization.k8s.io/microk8s-hostpath created
clusterrolebinding.rbac.authorization.k8s.io/microk8s-hostpath created
Storage will be available soon

要检查是否已启用存储,我们应该检查我们的Pod,并确保已启动hostpath-provisioner pod。

$ microk8s kubectl get pods --all-namespaces

NAMESPACE     NAME                                         READY   STATUS    RESTARTS   AGE
kube-system   kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running   2          22h
kube-system   dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running   2          22h
kube-system   metrics-server-8bbfb4bdb-mgddj               1/1     Running   2          22h
kube-system   coredns-86f78bb79c-58sbs                     1/1     Running   2          22h
kube-system   calico-kube-controllers-847c8c99d-j84p5      1/1     Running   2          22h
kube-system   calico-node-zv994                            1/1     Running   2          21h
kube-system   hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running   0          71s <==

通过运行以下命令确认创建的StorageClass:

$ microk8s kubectl get storageclasses

NAME                          PROVISIONER            RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
microk8s-hostpath (default)   microk8s.io/hostpath   Delete          Immediate           false                  8m42s

如您所见,有一个名为“ microk8s-hostpath”的存储类,这很重要,因为在创建PersistentVolumeClaims时将使用该名称,如下所示。

创建PersistentVolumeClaim

要创建我们的示例PersistentVolumeClaim,只需打开您喜欢的编辑器并添加以下yaml行:注意storageClassName上的microk8s-hostpath。

$ nano sample-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elk-data-1
spec:
  storageClassName: microk8s-hostpath
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

然后通过如下所示运行create命令来创建PVC,您应该看到创建的消息已打印出来。

$ microk8s kubectl create -f sample-pvc.yaml

persistentvolumeclaim/elk-data-1 created

要确认我们的PVC已创建,只需发出如下神奇的MicroK8S命​​令即可。

$ microk8s kubectl get pvc

NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
elk-data-1   Bound    pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1   2Gi        RWO            microk8s-hostpath   5s 

由于MicroK8S是动态交付持久卷的,因此我们的PVC将创建一个持久卷,如下面的命令所确认。

$ microk8s kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS       REASON   AGE
pvc-fe391d65-6909-4c76-a6c9-87b3fd5a58a1   2Gi        RWO            Delete           Bound    default/elk-data-1   microk8s-hostpath            5m 39s

步骤7:配置注册表

注册表基本上是一个存储和内容交付系统,包含命名的Docker映像,可以按照开发进度和发行版提供不同的标记版本; MicroK8S具有内置的注册表,也只需启用并使用它即可。就像我们到目前为止在其他服务中看到的那样简单。唯一要考虑的是,如果不指定注册表,它将选择20G作为注册表的默认大小。如果希望指定大小,只需添加size config如果您对20G满意,则忽略size选项。

$ microk8s enable registry:size=25Gi

The registry is enabled
The size of the persistent volume is 25Gi

确认是否已部署注册表窗格

$ microk8s kubectl get pods --all-namespaces

NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE  
kube-system          kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running   2          22h  
kube-system          dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running   2          22h  
kube-system          metrics-server-8bbfb4bdb-mgddj               1/1     Running   2          22h  
kube-system          coredns-86f78bb79c-58sbs                     1/1     Running   2          22h  
kube-system          calico-kube-controllers-847c8c99d-j84p5      1/1     Running   2          22h  
kube-system          calico-node-zv994                            1/1     Running   2          22h  
kube-system          hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running   0          52m  
container-registry   registry-9b57d9df8-6djrn                     1/1     Running   0          3m34s <==

所有命令如下所示:为了测试新创建的注册表的性能,我们将安装Podman,提取映像并将其推送到本地注册表。

$ sudo dnf -y install podman
$ podman pull redis

确认图像已被拉出

$ podman images

REPOSITORY                TAG      IMAGE ID       CREATED      SIZE         9ueue state U
docker.io/library/redis   latest   84c5f6e03bf0   5 days ago   108 MB

如您所见,我们的映像来自docker.io存储库。

接下来,编辑Podman配置文件,并在以下位置包含本地注册表 [registries.insecure] 由于我们将不使用任何证书,因此请确保添加服务器的IP或主机名,以便群集中的其他节点可以访问它。注册表侦听端口32000,并且我们已经在其中打开了步骤2中的防火墙。

$ sudo vim /etc/containers/registries.conf
[registries.insecure]
registries = ['172.26.16.92', '127.0.0.1']

从上面的Podman images命令可以看到,我们的映像来自docker.io存储库,正如我们已经提到的那样,让我们​​对其进行标记和自定义,使其匹配并存储到我们的本地注册表中。

$ podman tag 84c5f6e03bf0 172.26.16.92:32000/custom-redis:geeksregistry
$ podman push 172.26.16.92:32000/custom-redis:geeksregistry

Getting image source signatures
Copying blob ea96cbf71ac4 done
Copying blob 2e9c060aef92 done
Copying blob 7fb1fa4d4022 done
Copying blob 07cab4339852 done
Copying blob 47d8fadc6714 done
Copying blob 45b5e221b672 done
Copying config 84c5f6e03b done
Writing manifest to image destination
Storing signatures

再次运行podman images命令以确认更改。

$ podman images

REPOSITORY                        TAG             IMAGE ID       CREATED      SIZE  
172.26.16.92:32000/custom-redis   geeksregistry   84c5f6e03bf0   5 days ago   108 MB
docker.io/library/redis           latest          84c5f6e03bf0   5 days ago   108 MB

登录到Worker节点并提取图像

现在我们准备从刚刚启用的本地注册表中提取映像。登录到您的工作节点或任何安装了podman的节点,然后尝试从主服务器中提取映像。如果您没有安装podman,只需发出下面的命令。

node-01 ~ $ sudo dnf install -y podman

再次在worker节点上或您希望拉取图像的任何服务器上,编辑podman配置文件并将本地注册表包含在 [registries.insecure] 因为我们不会使用任何证书。

$ sudo vim /etc/containers/registries.conf

[registries.insecure]
registries = ['172.26.16.92', '127.0.0.1']

一切做好之后,现在让我们尝试从MicroK8S注册表中提取图像。

node-01 ~ $ podman pull 172.26.16.92:32000/custom-redis:geeksregistry

Trying to pull 172.26.16.92:32000/custom-redis:geeksregistry...
Getting image source signatures
Copying blob 08c34a4060bc done
Copying blob 50fae304733d done
Copying blob 8de9fbb8976d done
Copying blob 72c3268a4367 done
Copying blob edbd7b7fe272 done
Copying blob b6c3777aabad done
Copying config 84c5f6e03b done
Writing manifest to image destination
Storing signatures
84c5f6e03bf04e139705ceb2612ae274aad94f8dcf8cc630fbf6d91975f2e1c9

检查图像细节

$ podman images

REPOSITORY                        TAG             IMAGE ID       CREATED      SIZE  
172.26.16.92:32000/custom-redis   geeksregistry   84c5f6e03bf0   5 days ago   108 MB

现在我们有了一个运行良好的注册表!!接下来,我们将在MicroK8s集群上配置日志记录和监视。

步骤8:使用FluentD,Elasticsearch和Kibana启用日志记录

MicroK8s附带了一个名为fluentd的软件包,该软件包会自动部署FluentD,Elasticsearch和Kibana(EFK)!!。这使使用成熟的(EFK)工具启用群集登录变得非常容易,这使它变得更加甜美。

为了使EFK正常启动,您至少需要8GB的内存和4vCPU。如果内存有限,则可以编辑它的状态集,如启用fluentd所示。

启用流利如下:

$ microk8s enable fluentd

Enabling Fluentd-Elasticsearch
Labeling nodes
node/master labeled
Addon dns is already enabled.
Adding argument --allow-privileged to nodes.
service/elasticsearch-logging created
serviceaccount/elasticsearch-logging created
clusterrole.rbac.authorization.k8s.io/elasticsearch-logging created
clusterrolebinding.rbac.authorization.k8s.io/elasticsearch-logging created
statefulset.apps/elasticsearch-logging created
configmap/fluentd-es-config-v0.2.0 created
serviceaccount/fluentd-es created
clusterrole.rbac.authorization.k8s.io/fluentd-es created
clusterrolebinding.rbac.authorization.k8s.io/fluentd-es created
daemonset.apps/fluentd-es-v3.0.2 created
deployment.apps/kibana-logging created
service/kibana-logging created
Fluentd-Elasticsearch is enabled

如果您看到elasticsearch-logging-0处于待处理状态,并且其状态未更改并且与kibana-logging一起处于CrashLoopBackOff状态,请登录到仪表板,然后单击elasticsearch-logging-0窗格,以便我们查看其事件。如果您看到“ 0/1个节点可用:1内存不足。Microk8s”错误,然后继续编辑 有状态集 如下所示。

$ microk8s kubectl get pods --all-namespaces

NAMESPACE            NAME                                         READY   STATUS              RESTARTS   AGE
kube-system          kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running             2          24h
kube-system          dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running             2          24h
kube-system          metrics-server-8bbfb4bdb-mgddj               1/1     Running             2          24h
kube-system          coredns-86f78bb79c-58sbs                     1/1     Running             2          24h
kube-system          calico-node-zv994                            1/1     Running             2          24h
kube-system          hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running             0          156m 
container-registry   registry-9b57d9df8-6djrn                     1/1     Running             0          107m 
kube-system          calico-kube-controllers-847c8c99d-j84p5      1/1     Running             2          24h  
kube-system          elasticsearch-logging-0                      0/1     Pending             0          4m57s <==
kube-system          kibana-logging-7cf6dc4687-bvk46              0/1     ContainerCreating   0          4m57s
kube-system          fluentd-es-v3.0.2-lj7m8                      0/1     Running             1          4m57s

如何在CentOS 8上安装MicroK8s Kubernetes集群

编辑后,删除elasticsearch-logging-0 Pod,以便使用新的配置更改重新创建它。给MicroK8s时间来拉动和部署Pod。稍后,所有操作应如下所示。请注意,如果您有足够的内存和CPU,您极不可能遇到这些错误,因为elasticsearch pod默认情况下要求3GB的内存。

microk8s kubectl get pods --all-namespaces
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          metrics-server-8bbfb4bdb-mgddj               1/1     Running   3          40h
kube-system          dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running   3          40h
kube-system          kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running   3          40h
kube-system          hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running   1          18h
kube-system          coredns-86f78bb79c-58sbs                     1/1     Running   3          40h
container-registry   registry-9b57d9df8-6djrn                     1/1     Running   1          18h
kube-system          calico-kube-controllers-847c8c99d-j84p5      1/1     Running   3          41h
kube-system          calico-node-zv994                            1/1     Running   3          40h
kube-system          elasticsearch-logging-0                      1/1     Running   0          20m <==
kube-system          fluentd-es-v3.0.2-j4hxt                      1/1     Running   10         25m <==
kube-system          kibana-logging-7cf6dc4687-mpsx2              1/1     Running   10         25m <==

访问Kibana

在pod正常运行之后,我们希望访问Kibana界面来配置索引并开始分析日志,为此,让我们了解kibana,fluentd和elasticsearch的详细信息。发出cluster-info命令如下:

$ microk8s kubectl cluster-info

Kubernetes master is running at https://127.0.0.1:16443
CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Elasticsearch is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy
Kibana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kibana-logging/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

虽然MicroK8s快照将在您的本地网络上有一个IP地址(kibana日志记录服务的群集IP),但是您也可以通过以下方式将Kibana的端口转发到主机上的一个空闲端口来访问Kibana:

$ microk8s kubectl port-forward -n kube-system service/kibana-logging --address 0.0.0.0 8080:5601

您可以通过以下命令在部署EFK的名称空间中检查服务,您将看到“ kibana-logging”服务在内部侦听端口5601,并将其转发到服务器上的免费端口。

kubectl get services -n kube-system
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
kube-dns                    ClusterIP   10.152.183.10            53/UDP,53/TCP,9153/TCP   42h
metrics-server              ClusterIP   10.152.183.8             443/TCP                  42h
kubernetes-dashboard        ClusterIP   10.152.183.88            443/TCP                  42h
dashboard-metrics-scraper   ClusterIP   10.152.183.239           8000/TCP                 42h
elasticsearch-logging       ClusterIP   10.152.183.64            9200/TCP                 48m
kibana-logging              ClusterIP   10.152.183.44            5601/TCP                 48m <==

我们的Kibana现在正在侦听端口8080。如果您的服务器中正在运行该端口,请在防火墙上允许此端口,如下图所示:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

成功之后,打开浏览器并通过指向以下网址访问Kibana的界面 http://[IP or FQDN]:8080。您应该看到如下所示的界面。

如何在CentOS 8上安装MicroK8s Kubernetes集群

点击“自行探索”

创建“索引模式”,由于流畅,Logstash应该默认显示。

如何在CentOS 8上安装MicroK8s Kubernetes集群

在时间过滤器上选择@timestamp,然后单击“创建索引模式”

如何在CentOS 8上安装MicroK8s Kubernetes集群

如何在CentOS 8上安装MicroK8s Kubernetes集群

创建索引模式后,点击“发现”图标,您将看到如下所示的点击数。

如何在CentOS 8上安装MicroK8s Kubernetes集群

步骤9:启用Prometheus

MicroK8带有内置的普罗米修斯“模组“只需要启用它即可。该模块将Prometheus与惊人的Grafana一起解压缩。没有什么比这更好的了!启用它,因为其他人已经启用了以下功能:

$ microk8s enable prometheus

然后检查是否正在部署它们

E                                         READY   STATUS              RESTARTS   AGE
kube-system          metrics-server-8bbfb4bdb-mgddj               1/1     Running             4          42h
kube-system          dashboard-metrics-scraper-6c4568dc68-p7q6t   1/1     Running             4          42h
kube-system          kubernetes-dashboard-7ffd448895-ht2j2        1/1     Running             4          42h
kube-system          hostpath-provisioner-5c65fbdb4f-llsnl        1/1     Running             2          20h
container-registry   registry-9b57d9df8-6djrn                     1/1     Running             2          19h
kube-system          elasticsearch-logging-0                      1/1     Running             0          39m
kube-system          kibana-logging-7cf6dc4687-6b48m              1/1     Running             0          38m
kube-system          calico-node-zv994                            1/1     Running             4          42h
kube-system          calico-kube-controllers-847c8c99d-j84p5      1/1     Running             4          42h
kube-system          fluentd-es-v3.0.2-pkcjh                      1/1     Running             0          38m  
kube-system          coredns-86f78bb79c-58sbs                     1/1     Running             4          42h  
monitoring           kube-state-metrics-66b65b78bc-txzpm          0/3     ContainerCreating   0          2m45s <==
monitoring           node-exporter-dq4hv                          0/2     ContainerCreating   0          2m45s <==
monitoring           prometheus-adapter-557648f58c-bgtkw          0/1     ContainerCreating   0          2m44s <==
monitoring           prometheus-operator-5b7946f4d6-bdgqs         0/2     ContainerCreating   0          2m51s <==
monitoring           grafana-7c9bc466d8-g4vss                     1/1     Running             0          2m45s <==

访问Prometheus Web界面

与访问以前的Web界面的方式类似,我们将内部Pod端口移植到服务器上的空闲端口,正如我们在前面的命令中确认的那样,Prometheus部署在名为“监控”。我们可以在此命名空间中获取所有服务,如下所示:

$ microk8s kubectl get services -n monitoring

kubectl get services -n monitoring
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
prometheus-operator     ClusterIP   None                    8443/TCP                     7m41s
alertmanager-main       ClusterIP   10.152.183.34           9093/TCP                     7m36s
grafana                 ClusterIP   10.152.183.35           3000/TCP                     7m35s
kube-state-metrics      ClusterIP   None                    8443/TCP,9443/TCP            7m35s
node-exporter           ClusterIP   None                    9100/TCP                     7m35s
prometheus-adapter      ClusterIP   10.152.183.22           443/TCP                      7m34s
prometheus-k8s          ClusterIP   10.152.183.27           9090/TCP                     7m33s
alertmanager-operated   ClusterIP   None                    9093/TCP,9094/TCP,9094/UDP   4m
prometheus-operated     ClusterIP   None                    9090/TCP                     3m59s

让我们移植Prometheus并从浏览器访问它。

$ microk8s kubectl port-forward -n monitoring service/prometheus-k8s --address 0.0.0.0 9090:9090
Forwarding from 0.0.0.0:9090 -> 9090

然后将浏览器指向端口9090上服务器的IP地址或FQDN,即 http:[IP or FQDN]:9090和往常一样,如果您的CentOS 8机器上运行有防火墙,请允许它,因为我们也将在3000端口上转发Grafana端口,所以也要添加此端口。

sudo firewall-cmd --add-port={9090,3000}/tcp --permanent
sudo firewall-cmd --reload

如何在CentOS 8上安装MicroK8s Kubernetes集群

访问Grafana Web界面

以类似的方式,像以前一样,在端口3000上转发Grafana。

$ microk8s kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000

Forwarding from 0.0.0.0:3000 -> 3000

然后将浏览器指向端口3000上服务器的IP地址或FQDN,即http:[IP or FQDN]:3000。您应该会看到漂亮的Grafana仪表板,如下图所示。默认的用户名和密码为“管理员“和”管理员“。系统会提示您立即进行更改。输入您的新密码,然后提交,即可进入。

如何在CentOS 8上安装MicroK8s Kubernetes集群

输入新的凭证

如何在CentOS 8上安装MicroK8s Kubernetes集群

而且你应该被允许进入

如何在CentOS 8上安装MicroK8s Kubernetes集群

有关MicroK8的其他信息,请关注 这个官方的MicroK8S网站..

结论结论

设置航程很长,并且在过程中遇到了一些挑战,但是我们成功地将MicroK8以及日志,监控,仪表板和其他部件一起部署了我们,希望本指南对您有所帮助,并在发现任何错误的情况下,请允许我们我们将继续为您提供不懈的支持,对此我们感到非常荣幸,我们深表谢意,为所有不懈努力来创建全世界开发人员和工程师使用的工具的人们加油打气。下面将对您有所帮助。

安装镜头-最佳Kubernetes仪表板和IDE

使用K3在5分钟内部署轻量级Kubernetes集群

使用kubeadm在Ubuntu上安装Kubernetes集群

使用kubeadm在CentOS 7上设置Kubernetes集群


您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南










Sidebar