Redian新闻
>
使用 Kubespray 安装 Kubernetes 集群 | Linux 中国

使用 Kubespray 安装 Kubernetes 集群 | Linux 中国

科技
 
导读:你是否正在寻找有关如何使用 Kubespray 安装 Kubernetes(k8s)的简单指南?   
本文字数:5424,阅读时长大约:6分钟

你是否正在寻找有关如何使用 Kubespray 安装 Kubernetes(k8s)的简单指南?

此页面上的分步指南将向你展示如何在 Linux 系统上使用 Kubespray 安装 Kubernetes 集群。

Kubespray 是一个自由开源的工具,它提供了 Ansible 剧本(playbook) 来部署和管理 Kubernetes 集群。它旨在简化跨多个节点的 Kubernetes 集群的安装过程,允许用户快速轻松地部署和管理生产就绪的 Kubernetes 集群。

它支持一系列操作系统,包括 Ubuntu、CentOS、Rocky Linux 和 Red Hat Enterprise Linux(RHEL),它可以在各种平台上部署 Kubernetes,包括裸机、公共云和私有云。

在本指南中,我们使用以下实验室:

◈ Ansible 节点(Kubespray 节点):最小安装的 Ubuntu 22.04 LTS(192.168.1.240)
◈ 3 个控制器节点:最小安装的 Rocky Linux 9(192.168.1.241/242/243)
◈ 2 个工作节点:最小安装的 Rocky Linux 9(192.168.1.244/245)

Kubespray 的最低系统要求

◈ 主节点:1500 MB RAM、2 个 CPU 和 20 GB 可用磁盘空间
◈ 工作节点:1024 MB、2 个 CPU、20 GB 可用磁盘空间
◈ Ansible 节点:1024 MB、1 个 CPU 和 20 GB 磁盘空间
◈ 每个节点上的互联网连接
◈ 拥有 sudo 管理员权限

事不宜迟,让我们深入了解安装步骤。

步骤 1)配置 Kubespray 节点

登录到你的 Ubuntu 22.04 系统并安装 Ansible。运行以下一组命令:

  1. $ sudo apt update
  2. $ sudo apt install git python3 python3-pip -y
  3. $ git clone https://github.com/kubernetes-incubator/kubespray.git
  4. $ cd kubespray
  5. $ pip install -r requirements.txt

验证 Ansible 版本,运行:

  1. $ ansible --version

创建主机清单,运行以下命令,不要忘记替换适合你部署的 IP 地址:

  1. $ cp -rfp inventory/sample inventory/mycluster
  2. $ declare -a IPS=(192.168.1.241 192.168.1.241 192.168.1.242 192.168.1.243 192.168.1.244 192.168.1.245)
  3. $ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

修改清单文件,设置 3 个控制节点和 2 个工作节点:

  1. $ vi inventory/mycluster/hosts.yaml

保存并关闭文件。

查看并修改文件 inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml 中的以下参数:

  1. kube_version: v1.26.2
  2. kube_network_plugin: calico
  3. kube_pods_subnet: 10.233.64.0/18
  4. kube_service_addresses: 10.233.0.0/18
  5. cluster_name: linuxtechi.local

要启用 Kuberenetes 仪表板和入口控制器等插件,请在文件 inventory/mycluster/group_vars/k8s_cluster/addons.yml 中将参数设置为已启用:

  1. $ vi inventory/mycluster/group_vars/k8s_cluster/addons.yml
  1. dashboard_enabled: true
  2. ingress_nginx_enabled: true
  3. ingress_nginx_host_network: true

保存并退出文件。

步骤 2)将 SSH 密钥从 Ansible 节点复制到所有其他节点

首先在你的 Ansible 节点上为你的本地用户生成 SSH 密钥:

  1. $ ssh-keygen

使用 ssh-copy-id 命令复制 SSH 密钥:

  1. $ ssh-copy-id sysops@192.168.1.241
  2. $ ssh-copy-id sysops@192.168.1.242
  3. $ ssh-copy-id sysops@192.168.1.243
  4. $ ssh-copy-id sysops@192.168.1.244
  5. $ ssh-copy-id sysops@192.168.1.245

还要在每个节点上运行以下命令:

  1. $ echo "sysops ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/sysops

步骤 3)禁用防火墙并启用 IPV4 转发

要在所有节点上禁用防火墙,请从 Ansible 节点运行以下 ansible 命令:

  1. $ cd kubespray
  2. $ ansible all -i inventory/mycluster/hosts.yaml -m shell -a "sudo systemctl stop firewalld && sudo systemctl disable firewalld"

运行以下 ansible 命令以在所有节点上启用 IPv4 转发和禁用交换:

  1. $ ansible all -i inventory/mycluster/hosts.yaml -m shell -a "echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf"
  2. $ ansible all -i inventory/mycluster/hosts.yaml -m shell -a "sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab && sudo swapoff -a"

步骤 4)启动 Kubernetes 部署

现在,我们都准备好开始 Kubernetes 集群部署,从 Ansible 节点运行下面的 Ansible 剧本:

  1. $ cd kubespray
  2. $ ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml

现在监控部署,可能需要 20 到 30 分钟,具体取决于互联网速度和硬件资源。

部署完成后,我们将在屏幕上看到以下输出:

很好,上面的输出确认部署已成功完成。

步骤 5)访问 Kubernetes 集群

登录到第一个主节点,切换到 root 用户,在那里运行 kubectl 命令:

  1. $ sudo su -
  2. # kubectl get nodes
  3. # kubectl get pods -A

输出:

完美,上面的输出确认集群中的所有节点都处于就绪状态,并且所有命名空间的 容器荚(Pod) 都已启动并正在运行。这表明我们的 Kubernetes 集群部署成功。

让我们尝试部署基于 Nginx 的部署并将其公开为节点端口,运行以下 kubectl 命令:

  1. $ kubectl create deployment demo-nginx-kubespray --image=nginx --replicas=2
  2. $ kubectl expose deployment demo-nginx-kubespray --type NodePort --port=80
  3. $ kubectl get deployments.apps
  4. $ kubectl get pods
  5. $ kubectl get svc demo-nginx-kubespray

以上命令的输出:

现在尝试使用工作节点的 IP 地址和节点端口(30050)访问此 Nginx 应用。

使用以下 curl 命令或 Web 浏览器访问此应用。

  1. $ curl 192.168.1.245:30050

或者,

完美,这证实了应用可以在我们的集群之外访问。

步骤 6)Kubernetes 仪表板(GUI)

要访问 Kubernetes 仪表板,让我们首先创建服务帐户并分配管理员权限,以便它可以使用令牌访问仪表板。

在 kube-system 命名空间中创建名为 “admin-user” 的服务帐户:

  1. $ vi dashboard-adminuser.yml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: admin-user
  6. namespace: kube-system

保存并关闭文件。

  1. $ kubectl apply -f dashboard-adminuser.yml
  2. serviceaccount/admin-user created

创建集群角色绑定:

  1. $ vi admin-role-binding.yml
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. kind: ClusterRoleBinding
  4. metadata:
  5. name: admin-user
  6. roleRef:
  7. apiGroup: rbac.authorization.k8s.io
  8. kind: ClusterRole
  9. name: cluster-admin
  10. subjects:
  11. - kind: ServiceAccount
  12. name: admin-user
  13. namespace: kube-system

保存并退出文件。

  1. $ kubectl apply -f admin-role-binding.yml
  2. clusterrolebinding.rbac.authorization.k8s.io/admin-user created

现在,为管理员用户创建令牌:

  1. $ kubectl -n kube-system create token admin-user

复制此令牌并将其放在安全的地方,因为我们将使用令牌登录 Kubernetes 仪表板。

使用以下 ssh 命令从你的系统连接到第一个主节点:

  1. $ ssh -L8001:localhost:8001 sysops@192.168.1.241

注意:替换适合你环境的 IP 地址。

登录后,切换到 root 用户并运行 kubectl proxy 命令:

  1. $ sudo su -
  2. # kubectl proxy
  3. Starting to serve on 127.0.0.1:8001

打开系统的网络浏览器,如下设置代理:

完成代理设置后,将以下网址粘贴到浏览器中:

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

选择令牌登录并粘贴你在上面为管理员用户生成的令牌,然后单击“登录(Sign in)”。

这就是本指南的全部内容,我希望你能从中找到有用的信息。请在下面的评论部分中发表你的疑问和反馈。


via: https://www.linuxtechi.com/install-kubernetes-using-kubespray/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1901.5 篇
|
贡献: 3442 天
2013-10-25
2023-03-29
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
破茧成蝶 - Serverless Kubernetes 的思考与征程(二)生活在佛州,你得学好西班牙语用 Tekton 在 Kubernetes 中编写你的第一条 CI/CD 流水线 | Linux 中国卡麦尔的警察和二手店Kubernetes 调查报告:配置不当可能导致安全问题从修复 Kubernetes 集群中,我学到了什么如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国广东篇:加快培育发展先进材料产业集群等十大战略性支柱产业集群、十大战略性新兴产业集群如何优雅限制 Kubernetes 集群中文件描述符与线程数量RRC detection、CornerNet、M2Det、FOCS…你都掌握了吗?一文总结目标检测必备经典模型(三)使用 Terraform 来管理 OpenStack 集群 | Linux 中国一款利器 ,持续分析 Kubernetes 中服务的性能3个管理多 Kubernetes 集群实用工具15 个 Kubernetes 最佳实践详解使用Dex实现Kubernetes身份验证美国普林斯顿大学,校园印象Medium的Kubernetes基础设施豆瓣评分8.9!300页Kubernetes学习手册,全是核心知识!如何使用Kubernetes实现应用程序的弹性伸缩Kubernetes Operator 最佳实践红豆年糕2015千人计划变2023千屏突破了Kubernetes 中 Ceph、LINSTOR、Mayastor 和 Vitastor 存储性能对比如何逐步安装 Kubernetes(k8s)指标服务器 | Linux 中国今年第一个版本 Kubernetes 1.27,发布啦!手把手教你基于 Kubernetes 实现 CI/CD 配置谷歌云推出配置管理仪表板,简化 Kubernetes 集群管理硬核!Kubernetes 网络排错“狂飙”级指南,运维请收好如何在 Arch Linux 中安装 MATE 桌面 | Linux 中国如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE | Linux 中国Kubernetes 如何保障容器可用性?一文介绍探针的使用揭秘 ChatGPT 背后的技术栈:OpenAI 如何将 Kubernetes 扩展到了 7500 个节点Kubernetes 上 Java 应用的最佳实践为Kubernetes集群部署一个ChatGPT机器人如何使用机器学习来有效管理 Kubernetes 资源
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。