KubeKey:安装Kubernetes插件的游戏改变者

由于Kubernetes是容器编排的实际标准,因此Kubernetes的安装仍然是Kubernetes用户(尤其是新手)面临的最大挑战之一。除了Kubernetes本身,他们还需要弄清楚如何安装安装所需的不同工具,例如kubelet,kubeadm和kubectl。他们一直想知道是否存在一个包含所有堆栈的工具,以便他们只能运行很少的安装命令。

在本文中,我将演示如何使用KubeKey设置三节点Kubernetes集群。

什么是KubeKey

使用Go开发的KubeKey提供了一种轻松,快速和灵活的方式来安装Kubernetes以及可以作为YAML或Chart文件部署的任何附件。KubeKey使用kubeadm在节点上尽可能多地并行安装Kubernetes集群,以降低安装复杂性并提高效率。与其他安装方法相比,它大大节省了安装时间。

众所周知,Kubernetes集群可以部署在本地环境,公共云,私有云或裸机上。因此,它可以作为部署云原生应用程序的综合平台。但是,每种环境可能需要不同的配置和设置。实际上,这是KubeKey改变游戏的地方,您可以使用它在任何环境中部署Kubernetes。

使用KubeKey安装Kubernetes的一般步骤是:

· 下载KubeKey。

· 创建一个配置文件,其中包含群集信息,例如主机和加载项。

· 应用配置文件,安装将自动开始。诸如docker之类的工具将全部自动安装。

准备主机

我将创建一个在云上具有三个节点的集群。这是我的机器配置,供您参考:

KubeKey:安装Kubernetes插件的游戏改变者

注意

· / var / lib / docker路径主要用于存储容器数据,并且在使用和操作期间其大小将逐渐增加。在生产环境中,建议/ var / lib / docker应该单独安装驱动器。

· 建议您的操作系统干净(不安装任何其他软件)。否则可能会发生冲突。

节点要求

· 必须通过SSH访问所有节点。

· 所有节点的时间同步。

· sudo / curl / openssl应该在所有节点中使用。

· 您可以预先在所有节点上安装docker。另外,KubeKey将在安装Kubernetes时自动安装docker。如果您无法从dockerhub.io下载图像,建议准备图像镜像。有关更多信息,请参阅为Docker守护程序配置注册表镜像。

依赖性要求

您可以使用KubeKey安装指定的Kubernetes版本。根据要安装的Kubernetes版本,需要安装的依赖项可能有所不同。您可以参考下面的列表,以查看是否需要提前在所有节点上安装相关的依赖项。

KubeKey:安装Kubernetes插件的游戏改变者

网络和DNS要求

· 确保/etc/resolv.conf中的DNS地址可用。否则,可能会导致群集中出现某些DNS问题。

· 如果您的网络配置使用防火墙规则或安全组,则必须确保基础结构组件可以通过特定端口相互通信。建议您关闭防火墙。有关更多信息,请参见网络访问。

安装Kubernetes

· 从其GitHub发布页面下载KubeKey,或使用以下命令下载KubeKey版本1.0.1。您只需要将KubeKey下载到用作安装任务箱的一台计算机上,例如主节点。

curl -sfL https://get-kk.kubesphere.io |VERSION = v1.0.1 sh-

注意

您可以在命令中更改版本号以下载特定版本。

2.上面的命令下载KubeKey并解压缩文件。您的文件夹现在包含一个名为kk的文件。使它可执行:

chmod x kk

3.现在我已经准备好KubeKey,我可以开始创建配置文件以指定集群信息。以下是用于创建配置文件的命令模板,该文件允许您安装具有自定义名称和路径的指定Kubernetes版本:

./kk create config [–with-kubernetes version] [(-f | –file) path]

Kubernetes的默认版本是v1.17.9。有关受支持的Kubernetes版本的更多信息,请参见此文件。执行以下命令作为示例:

./kk create config –with-kubernetes v1.17.9

4.如果不自定义名称,将创建默认文件config-sample.yaml。编辑文件。

vi config-sample.yaml

5.您将看到文件中预填充了一些值。这是我的配置供您参考:

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, user: root, password: Testing123}
  - {name: worker1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: Testing123}
  - {name: worker2, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: Testing123}
  roleGroups:
    etcd:
    - master
    master:
    - master
    worker:
    - worker1
    - worker2
  controlPlaneEndpoint:
    domain: lb.kubesphere.local
    address: ""
    port: "6443"
  kubernetes:
    version: v1.17.9
    imageRepo: kubesphere
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []
  addons: []

在此示例文件中,列出主机下的所有计算机并添加其详细信息。

· name:实例的主机名。

· address:用于通过SSH在任务箱和其他实例之间进行连接的IP地址。根据您的环境,它可以是公用IP地址或专用IP地址。例如,某些云平台为每个实例提供一个公共IP地址,您可以使用该IP地址通过SSH访问实例。在这种情况下,您可以为此字段输入公共IP地址。

· internalAddress:实例的私有IP地址。

· user和password字段表示您用于连接到实例的用户和密码。对于使用SSH密钥的无密码登录,您需要提供私钥的路径,如下所示:

主机:-{名称:主机,地址:192.168.0.2,内部地址:192.168.0.2,privateKeyPath:”〜/ .ssh / id_rsa”}

· etcd:etcd节点名称。

· master:主节点名称。

· worker:工作节点名称。

您可以在此配置文件中提供更多值,例如插件。KubeKey可以安装所有可以作为YAML文件或图表文件安装的插件。例如,默认情况下,KubeKey不会为Kubernetes安装任何存储插件,但是您可以添加自己的存储系统,包括NFS Client,Ceph和Glusterfs。有关配置文件的更多信息,请参阅《 Kubernetes群集配置》和此文件。

6.完成编辑后,保存文件并执行以下命令来安装Kubernetes:

./kk create cluster -f config-sample.yaml

7.安装完成后,您将看到以下输出。

恭喜你!安装成功。

8.执行以下命令检查名称空间的状态。

kubectl get pod –all-namespaces

NAMESPACE     NAME               READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-
              controllers-
              59d85c5c84-mqk9g   1/1     Running   0         2m56s
kube-system   calico-node-hp6b5  1/1     Running   0         2m56s
kube-system   calico-node-stxj8  1/1     Running   0         2m55s
kube-system   calico-node-wzjn9  1/1     Running   0         2m55s
kube-system   coredns-74d59cc5c6
              -dkpq4             1/1     Running   0         3m5s
kube-system   coredns-74d59cc5c6
              -v2bvx             1/1     Running   0         3m5s
kube-system   kube-apiserver
              -master            1/1     Running   0         3m22s
kube-system   kube-controller
             -manager-master     1/1     Running   0         3m22s
kube-system   kube-proxy-5h6bv   1/1     Running   0         2m55s
kube-system   kube-proxy-btfxl   1/1     Running   0         3m5s
kube-system   kube-proxy-rht2m   1/1     Running   0         2m55s
kube-system   kube-scheduler
              -master            1/1     Running   0         3m22s
kube-system   nodelocaldns-2fkqb 1/1     Running   0         2m55s
kube-system   nodelocaldns-5gzmn 1/1     Running   0         2m55s
kube-system   nodelocaldns-mggpb 1/1     Running   0         3m5s

访问Kubernetes仪表板

· 要更直观地了解群集资源,可以访问基于Web的Kubernetes用户界面。默认情况下,KubeKey不会安装它。要部署它,请运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

2.要访问Kubernetes仪表板,您可以按照其官方文档中的说明运行kubectl代理,而只能从执行命令的机器上访问该仪表板。执行以下命令,您可以看到仪表板服务类型为ClusterIP。

kubectl get svc -n kubernetes-dashboard

NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-
metrics-
scraper    ClusterIP   10.233.45.187         8000/TCP   5m51s
kubernetes-
dashboard   ClusterIP   10.233.62.52          443/TCP    5m51s

3.由于我的机器都在云上,因此我需要通过NodePort公开仪表板服务,以便可以在集群外部访问它。运行以下命令:

kubectl edit svc kubernetes-dashboard -o yaml -n kubernetes-dashboard

4.导航到.spec.type并将ClusterIP更改为NodePort。

spec:
  clusterIP: 10.233.62.52
  ports:
  - port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort  # Change ClusterIP to NodePort.

5.保存文件,然后再次检查仪表板服务。您可以看到仪表板服务已公开。

kubectl get svc -n kubernetes-dashboard

NAME     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)      AGE
dashboard-
metrics-
scraper   ClusterIP   10.233.45.187         8000/TCP       12m
kubernetes
-dashboard   NodePort    10.233.62.52      443:31259/TCP   12m

6.由于在此示例中暴露了端口31259,因此我可以通过https://IP:31259.访问仪表板。

KubeKey:安装Kubernetes插件的游戏改变者

注意

您可能需要配置端口转发规则,并根据您的环境在安全组中打开端口。

7.要登录到仪表板,您需要创建一个ServiceAccount对象和ClusterRoleBinding对象。在名称空间kubernetes-dashboard中创建名称为admin-user的帐户。

cat <

创建一个ClusterRoleBinding对象。

cat <
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF

8.执行以下命令以获取承载令牌,以登录到仪表板。

对于Bash:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk \'{print $1}\’)

对于Powershell:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | sls admin-user | ForEach-Object { $_ -Split \’\s \’ } | Select -First 1)

预期输出:

Name: admin-user-token-flkqz
Namespace: kubernetes-dashboard
Labels:
Annotations: kubernetes.io/service-account.name: admin-user
kubernetes.io/service-account.uid: 78870e66-89c1-4750-915d-b147dbba66cb

Type: kubernetes.io/service-account-token

Data
====
ca.crt: 1025 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6Im9EaXNLOWUyV21UcDhOVzFUanl6bnRzdHBocWF6bjhLcXltSGM1Ulc5aVUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWZsa3F6Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI3ODg3MGU2Ni04OWMxLTQ3NTAtOTE1ZC1iMTQ3ZGJiYTY2Y2IiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.SKseCm1u7Yga0jx2nFf5x4FoHgOONWQ8S1yDdPGXoZpuUShCr8b6ofmISHDi_Tsk3qQfwlMA99NWkLKeM6ijktULIbk9Y11GjMh0-rWjdxQPbxB6Bh0LGYh4SGLl_hNkYOVxd_1r8H-hddRHbkfs8t4eH-pUjQewC7LrCG5SQNrHtQnyuDleQQdSq1TNtDviCA17cL_XFomRkomqi4Vy7QExwEDYaNy7-9c_C-59Hh5QexZ4MoR8WsZewR-uXr_z2RmbTnuXaK-1wkIHt-niFdgxozGg4tcPvlIQ7XvJGMKXcSnrqnaieImUY_Y_6_Z8wm6LJl4XaypjhnYqJZD3wA

9.复制令牌并将其粘贴到”输入令牌”字段中,然后单击”登录”。您现在可以在仪表板上查看节点信息并编辑资源。

KubeKey:安装Kubernetes插件的游戏改变者

KubeSphere及其图形仪表板

KubeSphere是一个分布式操作系统,以Kubernetes为内核管理云原生应用程序。作为开源企业级容器平台,它拥有全栈自动IT操作,多集群管理和简化的DevOps工作流程。这是KubeSphere的体系结构。

KubeKey:安装Kubernetes插件的游戏改变者

此外,KubeSphere还具有自己的基于Web的响应式控制台,它比Kubernetes仪表板更强大和全面。具有必要权限的用户可以直接在控制台上操作资源,同时他们还可以选择使用内置的Web工具kubectl。

KubeKey:安装Kubernetes插件的游戏改变者

实际上,您可以使用KubeKey同时安装Kubernetes和KubeSphere。运行命令./kk create config时,需要添加–with-kubesphere [version]标志,此过程基本相同。有关更多信息,请查看KubeSphere文档。

请观看此视频以获取动手教程:

概要

我在本文中演示的安装过程只是KubeKey能够完成的一小部分。除了安装Kubernetes和KubeSphere,您还可以使用它来扩展和升级集群。只要您预先下载安装映像,它也支持空白安装。

我希望这篇文章对那些一直在寻求安装方法的人特别有用。我认为,使用KubeKey,Kubernetes社区将在安装效率和用户体验方面迈出重要的一步。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/20189.html

发表评论

登录后才能评论