我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Ubuntu怎么搭建Kubernetes集群

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Ubuntu怎么搭建Kubernetes集群

这篇文章主要介绍“Ubuntu怎么搭建Kubernetes集群”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Ubuntu怎么搭建Kubernetes集群”文章能帮助大家解决问题。

关于 Kubernetes

下面是一段来自维基百科的关于 Kubernetes 的解释:

Kubernetes(常简称为 K8s)是用于自动部署、扩展和管理「容器化(containerized)应用程序」的开源系统。该系统由 Google 设计并捐赠给 Cloud Native Computing Foundation(今属 Linux 基金会)来使用。
它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。

Kubernetes 可以为我们提供 服务发现和负载均衡、存储编排、自动部署和回滚、自动完成装箱计算、自我修复 和 密钥与配置管理 的能力。

基础环境准备

安装 VirtualBox

VirtualBox 是一种功能强大的虚拟机软件,而且是开源免费的,这是下载地址,安装 VirtualBox 非常简单,这里我就不赘述了。

下载 Ubuntu 16 系统镜像

这里我选择了 Ubuntu 16 作为系统镜像,当然你也可以使用其他系统,比如 CentOS 等,Ubuntu 16 的下载地址。

虚拟机 x3

安装好了 VirtualBox,下载了 Ubuntu 16 的镜像后,我们首先需要搭建三台 Ubuntu 16 的虚拟机。这个新建虚拟机的过程也是比较简单的,一步一步往下走就可以了。新建完成后,我们需要对每台虚拟机进行相应的配置,配置时使用的用户应该是 root 用户。

虚拟机 IP

由于我们使用的是虚拟机,我们会给每台虚拟机配置网卡,让每台虚拟机都可以上网的,这里有两种方式:

  • 使用 桥接网卡,每台虚拟机的 IP 将会是宿主机网段的,支持虚拟机上网

  • 使用 NAT 网络 + 端口转发,网段自行设置,支持虚拟机上网

大家可以使用其中任意一种方式给虚拟机配置网卡,从而让虚拟机可以上网。

需要注意的是,在集群搭建完成后,集群中的每个节点的 IP 要求保持不变,否则节点需要重新加入。

简单的方式就是让虚拟机不关机,而是进入睡眠状态,下次只需唤醒即可。

在集群中,我们使用的是内网地址,可以通过 ifconfig 或者 ip addr 找到每台虚拟机对应的内网地址:

> ifconfigenp0s3    Link encap:Ethernet  HWaddr 08:00:27:6f:23:2a            inet addr:10.0.2.4  Bcast:10.0.2.255  Mask:255.255.255.0          inet6 addr: fe80::a00:27ff:fe6f:232a/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:3277016 errors:0 dropped:0 overruns:0 frame:0          TX packets:3385793 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:1084480916 (1.0 GB)  TX bytes:2079122979 (2.0 GB)

这台虚拟机(master)的地址就是 10.0.2.4。

配置主机名

Kubernetes 的节点名称是由主机名决定的,所以我们可以分别设置三台虚拟机的主机名为 master、node1 和 node2,通过修改 /etc/hosts 文件来修改主机名,需要重启虚拟机:

# /etc/hosts10.0.2.4 master10.0.2.5 node110.0.2.6 node2

SSH 无密连接

在虚拟机运行起来后,我们要做的第一件事就是要连通这三台虚拟机,即配置 SSH 无密连接。
首先在其中的一台虚拟机上生成 SSH 的公私钥:

ssh-keygen -t rsa -C 'k8scat@gmail.com' -f ~/.ssh/id_rsa -q -N ''

关于 ssh-keygen 的参数说明:

  • -t rsa 指定加密算法为 RSA

  • -C 'k8scat@gmail.com' 用于提供一个备注,表明私钥的生成者

  • -f ~/.ssh/id_rsa 指定私钥生成的位置

  • -q -N '' 表示不对私钥加密码,以及使用静默的方式

将公私钥分发给另外两台虚拟机,并在三台虚拟机上都将公钥(~/.ssh/id_rsa.pub)的内容写进 ~/.ssh/authorized_keys 文件中,同时设置 ~/.ssh/authorized_keys 文件的权限为 400:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 400 ~/.ssh/authorized_keys

配置完成后,我们将可以通过以下方式在其中一个虚拟机上连接另一台虚拟机了:

# 在 master 节点上ssh root@node1

Kubernetes 集群搭建

在弄好三台虚拟机后,我们便可以开始搭建一个拥有三个节点的 Kubernetes 的集群了。

安装 Docker

apt-get update -yapt-get install -y \  apt-transport-https \  ca-certificates \  curl \  gnupg \  lsb-releasecurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho \  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# INSTALL DOCKER ENGINEapt-get update -yapt-get install -y docker-ce docker-ce-cli containerd.io# Configure Docker to start on bootsystemctl enable docker.servicesystemctl enable containerd.service# Start Dockersystemctl start docker

安装 kubeadm、kubelet 和 kubectl

这里使用的是阿里云的镜像源:

# 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包apt-get update -yapt-get install -y apt-transport-https ca-certificates curl# 下载 Google Cloud 公开签名秘钥# curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgcurl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -# 添加 Kubernetes apt 仓库# echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listecho "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list# 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本apt-get update -yapt-get install -y kubelet kubeadm kubectlapt-mark hold kubelet kubeadm kubectl

关闭 SWAP

编辑 /etc/fstab 文件并注释掉 swap 分区的配置:

#/dev/mapper/master--vg-swap_1 none            swap    sw              0       0

预先下载镜像

获取 kubeadm init 需要使用到的镜像列表:

> kubeadm config images listk8s.gcr.io/kube-apiserver:v1.21.1k8s.gcr.io/kube-controller-manager:v1.21.1k8s.gcr.io/kube-scheduler:v1.21.1k8s.gcr.io/kube-proxy:v1.21.1k8s.gcr.io/pause:3.4.1k8s.gcr.io/etcd:3.4.13-0k8s.gcr.io/coredns/coredns:v1.8.0

k8s 的镜像源对于国内用户是可望而不可即的,但我们可以先拉到国内的镜像仓或者可以使用的镜像仓

我们可以新建一个 GitHub 代码仓,里面只有一个 Dockerfile,其内容如下:

FROM k8s.gcr.io/kube-apiserver:v1.21.0

然后在阿里云的容器镜像服务 ACR 中新建一个镜像,并关联这个 GitHub 代码仓,构建出来的镜像就是我们要的 k8s 镜像,比如上面的 k8s.gcr.io/kube-apiserver:v1.21.1,但在使用的时候需要重新给镜像打标签。

在 ACR 中构建好了所有需要的镜像后,使用下面这个脚本可以快速处理给镜像打标签的任务:

# Pull images from aliyun registrykubeadm config images list | sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#registry.cn-shenzhen.aliyuncs.com/k8scat#g' -e 's#/coredns/coredns#/coredns#g' | sh -x# Tag imagesdocker images | grep k8scat | awk '{print "docker tag",$1":"$2,$1":"$2}' | sed -e 's#registry.cn-shenzhen.aliyuncs.com/k8scat#k8s.gcr.io#2' | sh -xdocker tag k8s.gcr.io/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0# Remove imagesdocker images | grep k8scat | awk '{print "docker rmi",$1":"$2}' | sh -x

初始化 master 节点

10.0.2.4 是 master 节点的 IP 地址,设置 pod 网段为 192.168.16.0/20:

> kubeadm init --apiserver-advertise-address=10.0.2.4 --pod-network-cidr=192.168.16.0/20kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \    --discovery-token-ca-cert-hash sha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065

加入 node 节点

kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \    --discovery-token-ca-cert-hash sha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065

分发 kubectl 配置文件

scp master:/etc/kubernetes/admin.conf /etc/kubernetes/admin.confecho 'export KUBECONFIG="/etc/kubernetes/admin.conf"' >> /etc/profilesource /etc/profile

安装网络插件

这里我们使用的是 Weave Net:

# curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave-net.yaml# With IPALLOC_RANGEkubectl apply -f https://gist.githubusercontent.com/k8scat/c6a1aa5a1bdcb8c220368dd2db69bedf/raw/da1410eea6771c56e93f191df82206be8e722112/k8s-weave-net.yaml

关于“Ubuntu怎么搭建Kubernetes集群”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Ubuntu怎么搭建Kubernetes集群

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Ubuntu怎么搭建Kubernetes集群

这篇文章主要介绍“Ubuntu怎么搭建Kubernetes集群”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Ubuntu怎么搭建Kubernetes集群”文章能帮助大家解决问题。关于 Kuberne
2023-07-04

Kubernetes集群怎么搭建

本篇内容介绍了“Kubernetes集群怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kubernetes 是一个可移植的、可扩展的
2023-06-27

Kubernetes 集群搭建(上)

不知道各位对Kubernetes了解多少呢?如果还是有一些了解,建议你读一下这篇文章,或许对你有些许帮助 !阅读本文您需要具备一下知识点:1.Kubernetes2.kubeadm3.docker以上三点如过各位看官都知晓,那么请尽情食用,
2023-06-05

kubernetes集群怎么搭建和使用

要搭建和使用Kubernetes集群,可以按照以下步骤进行操作:1. 安装Docker:Kubernetes需要在每个节点上安装Docker来运行容器。2. 安装Kubernetes Control Plane:可以使用Kubeadm、Mi
2023-08-24

怎样进行Kubernetes 集群搭建

这期内容当中小编将会给大家带来有关怎样进行Kubernetes 集群搭建,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。yum安装需要的组件,我这里指定了具体的版本,我用的版本比较老,不过如果你是第一次用,
2023-06-05

Kubernetes集群的搭建方法

本篇内容主要讲解“Kubernetes集群的搭建方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes集群的搭建方法”吧!0. 概要使用kubeadm搭建一个单节点kuberne
2023-06-19

Minikube如何搭建Kubernetes集群

这篇文章主要介绍了Minikube如何搭建Kubernetes集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Minikube打开 https://github.com/k
2023-06-29

kubernetes之statefulset搭建MySQL集群

目录实现步骤具体代码创建一个 StatefulSet 对象来定义mysql创建一个 headless service实现步骤在 Kubernetes 集群中创建一个 StatefulSet 对象。创建一个 headless service
2023-04-19

kubernetes集群搭建的方法是什么

这篇文章主要介绍“kubernetes集群搭建的方法是什么”,在日常操作中,相信很多人在kubernetes集群搭建的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”kubernetes集群搭建的方法
2023-06-27

kubernetes中搭建spark集群的方式

这篇文章主要讲解了“kubernetes中搭建spark集群的方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“kubernetes中搭建spark集群的方式”吧!适用场景:linux系统,
2023-06-19

ubuntu 使用阿里云镜像源快速搭建kubernetes 1.15.2集群

搭建k8s集群时,需要访问google,下载相关镜像以及安装软件,非常麻烦。正好阿里云提供了k8s的更新源,国内用户就可以直接使用了。操作系统主机名IP地址功能配置ubuntu-16.04.5-server-amd64k8s-master1
2023-01-31

如何使用VirtualBox+Ubuntu16搭建Kubernetes集群

小编给大家分享一下如何使用VirtualBox+Ubuntu16搭建Kubernetes集群,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Kubernetes 运
2023-06-15

在Kubernetes集群中怎么搭建Istio微服务网格

本篇内容介绍了“在Kubernetes集群中怎么搭建Istio微服务网格”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.使用sealos部
2023-06-30

ubuntu集群搭建的方法是什么

要搭建Ubuntu集群,可以按照以下步骤进行:1. 安装Ubuntu操作系统:在每个节点上安装Ubuntu操作系统。可以选择最新版本的Ubuntu Server。2. 配置网络:确保每个节点都能够相互通信,可以使用静态IP或DHCP来配置网
2023-09-21

kubernetes实践中的Etcd3集群搭建是怎样的

这篇文章给大家介绍kubernetes实践中的Etcd3集群搭建是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一:Etcd简介ETCD是用于共享配置和服务发现的分布式,一致性的KV存储系统。类似于Zookeep
2023-06-04

kubernetes集群如何搭建Zabbix监控平台

本篇内容介绍了“kubernetes集群如何搭建Zabbix监控平台”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、zabbix介绍1.z
2023-07-02

docker mysql集群怎么搭建

要搭建Docker MySQL集群,可以按照以下步骤进行操作:安装Docker:在每个节点上安装Docker引擎。创建Docker网络:创建一个Docker网络,用于连接MySQL容器。docker network create mysq
2023-10-27

centos6.9怎么搭建pxc集群

这篇文章主要讲解了“centos6.9怎么搭建pxc集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“centos6.9怎么搭建pxc集群”吧!一:环境介绍:10.1.32.49 10.1.
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录