由于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之类的工具将全部自动安装。
准备主机
我将创建一个在云上具有三个节点的集群。这是我的机器配置,供您参考:
注意
· / var / lib / docker路径主要用于存储容器数据,并且在使用和操作期间其大小将逐渐增加。在生产环境中,建议/ var / lib / docker应该单独安装驱动器。
· 建议您的操作系统干净(不安装任何其他软件)。否则可能会发生冲突。
节点要求
· 必须通过SSH访问所有节点。
· 所有节点的时间同步。
· sudo / curl / openssl应该在所有节点中使用。
· 您可以预先在所有节点上安装docker。另外,KubeKey将在安装Kubernetes时自动安装docker。如果您无法从dockerhub.io下载图像,建议准备图像镜像。有关更多信息,请参阅为Docker守护程序配置注册表镜像。
依赖性要求
您可以使用KubeKey安装指定的Kubernetes版本。根据要安装的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.访问仪表板。
注意
您可能需要配置端口转发规则,并根据您的环境在安全组中打开端口。
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.复制令牌并将其粘贴到”输入令牌”字段中,然后单击”登录”。您现在可以在仪表板上查看节点信息并编辑资源。
KubeSphere及其图形仪表板
KubeSphere是一个分布式操作系统,以Kubernetes为内核管理云原生应用程序。作为开源企业级容器平台,它拥有全栈自动IT操作,多集群管理和简化的DevOps工作流程。这是KubeSphere的体系结构。
此外,KubeSphere还具有自己的基于Web的响应式控制台,它比Kubernetes仪表板更强大和全面。具有必要权限的用户可以直接在控制台上操作资源,同时他们还可以选择使用内置的Web工具kubectl。
实际上,您可以使用KubeKey同时安装Kubernetes和KubeSphere。运行命令./kk create config时,需要添加–with-kubesphere [version]标志,此过程基本相同。有关更多信息,请查看KubeSphere文档。
请观看此视频以获取动手教程:
概要
我在本文中演示的安装过程只是KubeKey能够完成的一小部分。除了安装Kubernetes和KubeSphere,您还可以使用它来扩展和升级集群。只要您预先下载安装映像,它也支持空白安装。
我希望这篇文章对那些一直在寻求安装方法的人特别有用。我认为,使用KubeKey,Kubernetes社区将在安装效率和用户体验方面迈出重要的一步。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/20189.html