k8s部署的四种方案

文章目录

  • 一、基于二进制文件的部署方式
    • 1. 准备 k8s 组件
    • 2. 安装 kubelet 和 kube-proxy
    • 3. 安装 kube-apiserver、kube-controller-manager 和 kube-scheduler
    • 4. 验证 k8s 集群
  • 二、使用 kubeadm 工具部署
    • 1. 准备节点
    • 2. 安装 kubeadm 工具
    • 3. 初始化 Master 节点
    • 4. 配置 k8s 环境
    • 5. 加入 Worker 节点
  • 三、云服务提供商的部署方式
    • 1. 准备节点
    • 2. 安装 Python 和 Ansible
    • 3. 克隆 kubespray 仓库
    • 4. 配置集群
    • 5. 部署集群
  • 四、使用容器镜像部署
    • 1. 准备节点
    • 2. 安装 Docker 和 Rancher
    • 3. 设置 Rancher
    • 4. 创建 k8s 集群
  • 希望以上4种方案能帮助到你们。

k8s(Kubernetes)是一个开源的容器编排平台,支持多种部署方式。常见的 k8s 部署方式包括:基于二进制文件、kubeadm 工具、云服务提供商、容器镜像等方式。

下面对这些 k8s 部署方式进行简要介绍:

一、基于二进制文件的部署方式

这种方式需要手动下载和安装 k8s 组件,包括 kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 等组件,并手动配置参数和启动命令。适合需要自定义配置和精细控制的场景,但也需要花费更多的时间和精力进行维护和升级。

第一个部署方案指的是基于二进制文件的 k8s 部署方式。以下是一个详细的 k8s 二进制部署方案:

1. 准备 k8s 组件

首先需要准备 k8s 组件,包括 kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy 等组件。可以从官方网站或 GitHub 等源获取最新版本的二进制文件。

2. 安装 kubelet 和 kube-proxy

在所有节点上安装 kubelet 和 kube-proxy 组件,并设置为开机自启动。

sudo mv kubelet /usr/local/bin/
sudo mv kube-proxy /usr/local/bin/sudo vi /etc/systemd/system/kubelet.service
# 编辑 kubelet.service 文件,添加下面内容:
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes[Service]
ExecStart=/usr/local/bin/kubelet \--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf \--kubeconfig=/etc/kubernetes/kubelet.conf \--config=/var/lib/kubelet/config.yaml \--hostname-override=<NODE_IP> \--pod-infra-container-image=k8s.gcr.io/pause:3.5
Restart=on-failure
KillMode=process
LimitNOFILE=65536[Install]
WantedBy=multi-user.target# 启动 kubelet 服务
sudo systemctl daemon-reload
sudo systemctl enable kubelet.service
sudo systemctl start kubelet.service# 设置 kube-proxy
sudo vi /etc/systemd/system/kube-proxy.service
# 编辑 kube-proxy.service 文件,添加下面内容:
[Unit]
Description=Kubernetes Kube Proxy
Documentation=https://github.com/kubernetes/kubernetes[Service]
ExecStart=/usr/local/bin/kube-proxy \--config=/var/lib/kube-proxy/config.conf
Restart=on-failure
KillMode=process
LimitNOFILE=65536[Install]
WantedBy=multi-user.target# 启动 kube-proxy 服务
sudo systemctl daemon-reload
sudo systemctl enable kube-proxy.service
sudo systemctl start kube-proxy.service

3. 安装 kube-apiserver、kube-controller-manager 和 kube-scheduler

在 Master 节点上安装 kube-apiserver、kube-controller-manager 和 kube-scheduler 组件,并设置为开机自启动。

sudo mv kube-apiserver /usr/local/bin/
sudo mv kube-controller-manager /usr/local/bin/
sudo mv kube-scheduler /usr/local/bin/sudo vi /etc/systemd/system/kube-apiserver.service
# 编辑 kube-apiserver.service 文件,添加下面内容:
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes[Service]
ExecStart=/usr/local/bin/kube-apiserver \--advertise-address=<MASTER_IP> \--allow-privileged=true \--etcd-servers=https://127.0.0.1:2379 \--service-cluster-ip-range=10.96.0.0/12 \--secure-port=6443 \--tls-cert-file=/etc/kubernetes/pki/apiserver.crt \--tls-private-key-file=/etc/kubernetes/pki/apiserver.key \--kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt \--kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key \--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname \--service-account-key-file=/etc/kubernetes/pki/sa.pub \--enable-admission-plugins=NodeRestriction,PodSecurityPolicy \--audit-log-maxage=30 \--audit-log-maxbackup=3 \--audit-log-maxsize=100 \--audit-log-path=/var/log/kubernetes/audit.log \--authorization-mode=Node,RBAC \--runtime-config=api/all \--allow-privileged=true \--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt \--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt \--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key \--enable-bootstrap-token-auth \--v=2Restart=on-failure
KillMode=process
LimitNOFILE=65536[Install]
WantedBy=multi-user.target# 启动 kube-apiserver 服务
sudo systemctl daemon-reload
sudo systemctl enable kube-apiserver.service
sudo systemctl start kube-apiserver.service# 设置 kube-controller-manager
sudo vi /etc/systemd/system/kube-controller-manager.service
# 编辑 kube-controller-manager.service 文件,添加下面内容:
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes[Service]
ExecStart=/usr/local/bin/kube-controller-manager \--bind-address=<MASTER_IP> \--leader-elect=true \--kubeconfig=/etc/kubernetes/controller-manager.conf \--service-cluster-ip-range=10.96.0.0/12 \--cluster-name=kubernetes \--allocate-node-cidrs=true \--use-service-account-credentials=true \--cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt \--cluster-signing-key-file=/etc/kubernetes/pki/ca.key \--v=2Restart=on-failure
KillMode=process
LimitNOFILE=65536[Install]
WantedBy=multi-user.target# 启动 kube-controller-manager 服务
sudo systemctl daemon-reload
sudo systemctl enable kube-controller-manager.service
sudo systemctl start kube-controller-manager.service# 设置 kube-scheduler
sudo vi /etc/systemd/system/kube-scheduler.service
# 编辑 kube-scheduler.service 文件,添加下面内容:
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes[Service]
ExecStart=/usr/local/bin/kube-scheduler \--address=<MASTER_IP> \--leader-elect=true \--kubeconfig=/etc/kubernetes/scheduler.conf \--v=2Restart=on-failure
KillMode=process
LimitNOFILE=65536[Install]
WantedBy=multi-user.target# 启动 kube-scheduler 服务
sudo systemctl daemon-reload
sudo systemctl enable kube-scheduler.service
sudo systemctl start kube-scheduler.service

4. 验证 k8s 集群

执行以下命令验证 k8s 集群是否正常:

kubectl get nodes
kubectl version

在以上步骤中,我们手动下载

二、使用 kubeadm 工具部署

kubeadm 是 k8s 官方推荐的工具,可以快速搭建 k8s 集群,并提供诸如更新、升级和故障修复等功能。使用 kubeadm 部署 k8s 集群通常会比较方便和快速,但需要满足一定的硬件和软件环境要求。

第二种部署方案指的是使用 kubeadm 工具部署 k8s 集群。以下是一个详细的 kubeadm 部署方案:

1. 准备节点

在准备节点之前,需要满足以下要求:

  • CentOS 7 / Ubuntu 16.04 及以上版本
  • 2 个或以上的节点,1 个 Master 节点和 1 个或多个 Worker 节点
  • 每个节点至少 2 CPU 和 2GB 内存

安装 Docker 并启动服务:

curl -fsSL https://get.docker.com | bash -systemctl start docker
systemctl enable docker

2. 安装 kubeadm 工具

从官方仓库下载并安装 kubeadm 工具:

# 添加 kubernetes 仓库
sudo vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg# 安装 kubeadm 工具
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

3. 初始化 Master 节点

在 Master 节点上执行以下命令初始化 k8s 集群:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

执行成功后将输出 kubeadm join 命令,复制该命令以备后续使用。

4. 配置 k8s 环境

在 Master 节点上执行以下命令设置 k8s 环境:

# 将当前用户的 kubeconfig 文件复制到默认目录下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config# 安装网络插件(这里以 Calico 为例)
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

5. 加入 Worker 节点

在 Worker 节点上执行第 3 步中复制的 kubeadm join 命令加入集群。

sudo kubeadm join <Master_IP>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

执行成功后,可以在 Master 节点上通过以下命令查看节点状态:

kubectl get nodes

至此,k8s 集群已经部署成功。

三、云服务提供商的部署方式

目前市场上大多数云服务提供商都支持 k8s 部署方式,如 Amazon EKS、Microsoft AKS、Google GKE 等,可以通过这些服务快速搭建 k8s 集群,并享受云服务提供商提供的自动化运维、监控和弹性扩容等功能。

第三种部署方案指的是使用 kubespray 工具部署 k8s 集群。以下是一个详细的 kubespray 部署方案:

1. 准备节点

在准备节点之前,需要满足以下要求:

  • CentOS 7 / Ubuntu 16.04 及以上版本
  • 2 个或以上的节点,1 个 Master 节点和 1 个或多个 Worker 节点
  • 每个节点至少 2 CPU 和 2GB 内存
  • 所有节点之间需要能够互相访问,建议在同一局域网内

2. 安装 Python 和 Ansible

在所有节点上安装 Python 和 Ansible:

# CentOS 7
sudo yum install -y python-setuptools python-devel libffi-devel openssl-devel gcc
sudo easy_install pip
sudo pip install ansible==2.9.6# Ubuntu 16.04 及以上版本
sudo apt-get update
sudo apt-get install -y python-setuptools python-dev libffi-dev libssl-dev build-essential
sudo easy_install pip
sudo pip install ansible==2.9.6

3. 克隆 kubespray 仓库

在任意节点上执行以下命令克隆 kubespray 仓库:

git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray

4. 配置集群

在 kubespray 目录下创建 inventory 文件:

cp -rfp inventory/sample inventory/mycluster

修改 inventory/mycluster 目录下的 inventory.ini 文件,配置集群信息:

[kube-master]
<MASTER_IP>[kube-node]
<WORKER_IP_1>
<WORKER_IP_2>
...[all:vars]
ansible_python_interpreter=/usr/bin/python3
cluster_name=kubernetes-cluster
container_manager=kubelet
docker_image_tag=v1.20.4
kube_version=v1.20.4
etcd_version=v3.4.14
kube_proxy_loadbalancer_exclude_cidrs=192.168.1.0/24

其中,<MASTER_IP> 为 Master 节点的 IP 地址,<WORKER_IP_X> 分别为 Worker 节点的 IP 地址。

5. 部署集群

在 kubespray 目录下执行以下命令部署 k8s 集群:

# 带有需要下载 container image 的步骤
ansible-playbook -i inventory/mycluster/inventory.ini --user=<SSH_USER> --key-file=<SSH_PRIVATE_KEY_FILE> --become --become-user=root cluster.yml# 不需要下载 container image 的步骤
ansible-playbook -i inventory/mycluster/inventory.ini --user=<SSH_USER> --key-file=<SSH_PRIVATE_KEY_FILE> --become --become-user=root cluster.yml --skip-tags=download

其中,<SSH_USER> 和 <SSH_PRIVATE_KEY_FILE> 需替换为实际使用的 SSH 用户名和私钥文件路径。

执行成功后,可以在 Master 节点上通过以下命令查看节点状态:

kubectl get nodes

至此,k8s 集群已经部署成功。

四、使用容器镜像部署

这种方式将 k8s 组件以容器镜像的形式打包,并利用容器调度系统进行部署。适合在已经有容器编排系统的场景下使用,如 Docker-compose、Swarm、Mesos 等。

总体来说,k8s 部署方式有多种,可以根据不同的场景和需求选择合适的方式进行部署。需要注意的是,在部署 k8s 集群之前,需要对硬件和软件环境进行充分的规划和准备,以确保 k8s 集群的稳定和高可用性。

第四种部署方案指的是使用 Rancher 工具部署 k8s 集群。以下是一个详细的 Rancher 部署方案:

1. 准备节点

在准备节点之前,需要满足以下要求:

  • CentOS 7 / Ubuntu 16.04 及以上版本
  • 2 个或以上的节点,1 个 Master 节点和 1 个或多个 Worker 节点
  • 每个节点至少 2 CPU 和 4GB 内存
  • 所有节点之间需要能够互相访问,建议在同一局域网内

2. 安装 Docker 和 Rancher

在所有节点上安装 Docker:

curl https://releases.rancher.com/install-docker/19.03.sh | sh

在 Master 节点上安装 Rancher:

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable

3. 设置 Rancher

在浏览器中访问 Master 节点的 IP 地址或域名,进入 Rancher 的 Web 界面,按照页面上的提示创建账户和项目,并添加节点。

添加节点时需要选择对应的操作系统和部署方式,以及选择使用的 k8s 版本。添加成功后,可以在 Rancher 的 Web 界面中查看节点状态。

4. 创建 k8s 集群

在 Rancher 的 Web 界面中,进入项目页面,选择 k8s 集群标签页,点击创建 k8s 集群并按照页面上的提示完成配置。

选项包括 k8s 版本、节点数量和规格、网络插件、自动扩容等。创建成功后,可以在页面上查看集群状态和节点状态。

至此,k8s 集群已经部署成功,并且可以在 Rancher 的 Web 界面中方便地管理和操作集群。

希望以上4种方案能帮助到你们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中英翻译数据集处理

添加数据集 https://aistudio.baidu.com/datasetdetail/209041 解压数据集 !unzip /home/aistudio/data/data209041/translation2019zh.zip处理成voc import pandas as pd import numpy as np from tqdm import tqdmdef gen_sp(en_voc1)</

用友NC FileUploadServlet 反序列化RCE漏洞复现

0x01 产品简介 用友 NC 是用友网络科技股份有限公司开发的一款大型企业数字化平台。 0x02 漏洞概述 用友 NC nc.file.pub.imple.FileUploadServlet 反序列化漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环…

龙迅LT2611UX 四端口LVDS转HDMI(2.0)

1.描述&#xff1a; LT2611UX 四端口LVDS TO HDMI2.0。 LT2611UX是一款高性能得LVDS到HDMI2.0转换器得STB&#xff0c;DVD应用程序&#xff0c;LVDS输入可以配置单端口&#xff0c;双端口或者四端口&#xff0c;带有一个高速时钟通道&#xff0c;最多可运行三到四个高速数据…

第一节JavaScript 简介与使用

JavaScript简介 JavaScript是互联网上最流行的脚本语言&#xff0c;这门语言可用于HTML和Web&#xff0c;更广泛用于服务器、PC、电脑、智能手机等设备上。 JavaScript是一种轻量级的编程语言。 JavaScript是可插入HTML页面的编程代码。 JavaScript插入HTML页面后&#xff…

算法基础六

搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入: nums [1,3,5,6], target 2 输…

每日一练2023.12.4——正整数【PTA】

一时间网上一片求救声&#xff0c;急问这个怎么破。其实这段代码很简单&#xff0c;index数组就是arr数组的下标&#xff0c;index[0]2 对应 arr[2]1&#xff0c;index[1]0 对应 arr[0]8&#xff0c;index[2]3 对应 arr[3]0&#xff0c;以此类推…… 很容易得到电话号码是18013…

Linux常用快捷键

1. tab 键补全 1)当我们忘记了一些指令怎么写时&#xff0c;可以双击tab键&#xff0c;查看所有指令&#xff0c;显示出来后可以按enter键往下翻&#xff0c;想要取消命令可以按ctrl c。 2)知道开头怎么写&#xff0c;后面的忘了&#xff0c;也可以双击tab键查询开头排列的指令…

通过证书透明度发现更多相关资产

通过证书透明度发现更多相关资产 1.证书透明度概述2.搜索实战3.为什么证书透明度技术是可行的4.DigiCert 和其他 CA5.缺陷缓解措施 1.证书透明度概述 许多现代网站都采用自动颁发和续订 TLS 证书&#xff0c;在设置 TLS 证书部署的方式上存在缺陷。它允许任何人发现同一服务器…

【皇帝的新装】像管理产品一样,来管理自己

在前进的路上需要不时的回头看&#xff0c;看自己来时的脚步&#xff0c;是杂乱无章&#xff0c;还是方向一致。善于从经验中总结可以让我们少走许多弯路&#xff0c;降低我们的消耗。 偶然间&#xff0c;回头看看&#xff0c;入行产品经理已经三年有余。沉迷在各种具体事务中&…

ChatGPT使用路径:从新手到专家的指南

原文&精华文章&转载注明&#xff1a;ChatGPT与日本首相交流核废水事件-精准Prompt... hello&#xff0c;我是小索奇&#xff0c;有任何问题或者需要帮助的都可以在这里找到我或者留言哈 一、初识ChatGPT 什么是ChatGPT&#xff1f; ChatGPT是一种大型语言模型&…

回溯法及例题(C++实现)

回溯法概念 概念&#xff1a;在包含问题所有解的解空间树中&#xff0c;按照深度优先搜索的策略&#xff0c;根据根结点&#xff08;开始节点&#xff09;出发搜索解空间树。 流程&#xff1a;首先根结点成为活节点&#xff0c;同时也成为当前的扩展结点。在当前的扩展结点处…

docker compose 搭建reids集群 1主2从架构

要使用 Docker Compose 搭建一个包含 1 个主节点和 2 个从节点的 Redis 集群&#xff0c;并将数据和日志文件挂载到宿主机上&#xff0c;你需要编写一个 docker-compose.yml 文件。这个文件将定义三个 Redis 服务&#xff0c;并配置相应的卷来持久化数据和日志。 下面是一个相…

代码随想录day5 哈希表part 01 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

当我们遇到了要快速判断一个元素是否出现集合里的时候&#xff0c;就要考虑哈希法。 哈希碰撞&#xff1a;1、拉链法&#xff1a;其实拉链法就是要选择适当的哈希表的大小&#xff0c;这样既不会因为数组空值而浪费大量内存&#xff0c;也不会因为链表太长而在查找上浪费太多时…

<JavaEE> 单例模式的两种实现:“饿汉模式”和“懒汉模式”

目录 一、单例模式概述 二、“饿汉模式”实现单例模式 三、“懒汉模式”实现单例模式 3.1 单线程下的“懒汉模式” 3.2 多线程下的“懒汉模式” 一、单例模式概述 1&#xff09;什么是单例模式&#xff1f; 单例模式是一种设计模式。 单例模式可以保证某个类在程序中只存…

免费百度SEO优化工具,百度SEO优化排名工具

百度SEO关键词工具 让我们聚焦在百度SEO关键词工具上。对于任何想要在百度搜索引擎中脱颖而出的网站管理员而言&#xff0c;深入了解用户搜索习惯和关键词的选择是至关重要的。 百度SEO关键词工具不仅提供了免费的服务&#xff0c;而且功能强大。通过输入相关领域的关键词&…

ESP32-Web-Server编程-通过 Web 下载文本

ESP32-Web-Server编程-通过 Web 下载文本 概述 当你希望通过网页导出设备的数据时&#xff0c;可以在 ESP32 上部署一个简单的文件 Web 服务器。 需求及功能解析 本节演示如何在 ESP32 上部署一个最简单的 Web 服务器&#xff0c;来接收浏览器或者 wget 指令请求文件数据。…

VMware安装Ubuntu系统(Server端,Desktop端步骤一样)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

MFC发送ZPL指令控制斑马打印机

1、参考1&#xff1a;用Python操控斑马打印机的技术总结 - 重拾初心的青年人 - 博客园 (cnblogs.com) 参考2&#xff1a;VC斑马打印机_vc zpl-CSDN博客 参考3&#xff1a;斑马打印机ZPL语言编程实战_梅长酥的博客-CSDN博客 参考4&#xff1a;关于斑马打印机开发的几种方式_斑马…

Appium:iOS测试比Android测试更难?

iOS测试与Android测试&#xff1a; Appium 是一个开源的自动化测试框架&#xff0c;用于iOS、Android和Web应用程序。它允许开发者使用自己的语言来编写测试脚本&#xff0c;并且可以运行在多种平台上。 就Appium本身而言&#xff0c;它为iOS和Android提供了相似的测试能力和…

java语言中fail-fast机制和fail-safe机制的作用是什么?

Java中的"fail-fast"&#xff08;快速失败&#xff09;和"fail-safe"&#xff08;安全失败&#xff09;是两种不同的迭代器策略&#xff0c;主要用于处理在迭代集合时可能发生的并发修改问题。 Fail-Fast 机制&#xff1a; “Fail-fast” 是 Java 集合框…