kubernetes集群部署

2023-11-06

环境

两台服务器,都是CentOS Linux release 7.9.2009 (Core)

master节点部署

安装docker

https://blog.csdn.net/yorao4565/article/details/126332047

服务器配置

  1. 配置hostname

将要连接的服务器的hostname配置到hosts中(只需要在master部署)

vim /etc/hosts


1.1.1.103 k8s-node2
1.1.1.102 k8s-master
  1. 修改docker的驱动程序为systemd(为了正常运行kubelet)
vim /etc/docker/daemon.json

{
	"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
  1. 关闭swap(为了正常运行kubelet)
swapoff -a
  1. 关闭防火墙,进行时间同步等

yum安装

新增yum源

cd /etc/yum.repos.d/
vim kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum makecache fast

安装kubelet、kubeadm、kubectl

选择的版本为1.23.10

yum install -y kubelet-1.23.10 kubeadm-1.23.10 kubectl-1.23.10

安装完后,kubelet启动失败,后续init之后就可以正常启动

启动master

建议直接init,提前执行kubeadm config images pull会有问题

kubeadm init --image-repository=registry.aliyuncs.com/google_containers
#registry.aliyuncs.com/google_containers为国内镜像地址

如果启动成功,会出现successful字段;
控制台输出末尾会出现join命令:

kubeadm join 1.1.1.102:6443 --token fmf7jr.zzc9o4o3oyklndly \
--discovery-token-ca-cert-hash sha256:9b909c4ae4bf48e008389b7d2c68373f258414d8c9ce74210baead75ec10a5c3

查看启动情况

[root@localhost /]# kubectl get nodes
NAME                    STATUS     ROLES                  AGE    VERSION
localhost.localdomain   NotReady   control-plane,master   158m   v1.23.10

此时NAME为默认localhost,可以使用以下命令进行配置:

hostnamectl --static set-hostname k8s-master

使用配置文件启动(推荐)

首先获得配置文件

kubeadm config print init-defaults > init-config.yaml

保存该文件并修改,可以配置相关参数,配置完成后可以使用配置文件进行启动:

kubeadm join --config=/home/k8s/init.config.yaml

  1. 如果init过程中pull镜像失败,可以删除container配置文件并重启container
rm /etc/containerd/config.toml
systemctl restart containerd
  1. init失败后,需要reset在重新尝试
kubeadm reset
  1. The connection to the server localhost:8080 was refused - did you specify the right host or port?
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile

source /etc/profile

其他节点部署

首先安装docker,与master一致(相关配置同样需要)

再安装kubeadm和kubelet(不需要kubectl)

kubeadm join

直接命令行join(即使用master安装时最后一行log)

kubeadm join 1.1.1.102:6443 --token fmf7jr.zzc9o4o3oyklndly --discovery-token-ca-cert-hash sha256:9b909c4ae4bf48e008389b7d2c68373f258414d8c9ce74210baead75ec10a5出

join前需要配置hostname

配置文件join

kubeadm config print join-defaults > join.config.yaml

修改并保存配置文件

vim join.config.yaml

#修改:
apiServerEndpoint: 1.1.1.102:6443
token: fmf7jr.zzc9o4o3oyklndly
tlsBootstrapToken: fmf7jr.zzc9o4o3oyklndly
name: k8s-node2

#与命令行一致

join命令为:

kubeadm join --config=/home/k8s/join.config.yaml

查看结果:

在master节点:

[root@localhost /]# kubectl get nodes
NAME                    STATUS     ROLES                  AGE    VERSION
localhost.localdomain   NotReady   control-plane,master   158m   v1.23.10
k8s-node2               NotReady   <none>                 91m    v1.23.10

安装网络插件CNI(calico)

在master节点执行

kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"

命令执行后,需要一段时间进行安装,安装完成后,进行查看:

kubectl get pods --all-namespaces

NAMESPACE     NAME                                            READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-66966888c4-tr2zw        1/1     Running   0          9m31s
kube-system   calico-node-t6m4m                               0/1     Running   0          9m31s
kube-system   calico-node-vtr7p                               0/1     Running   0          9m31s
kube-system   coredns-6d8c4cb4d-m2tbp                         1/1     Running   0          6d3h
kube-system   coredns-6d8c4cb4d-p4s4j                         1/1     Running   0          6d3h
kube-system   etcd-localhost.localdomain                      1/1     Running   0          6d2h
kube-system   kube-apiserver-localhost.localdomain            1/1     Running   0          6d2h
kube-system   kube-controller-manager-localhost.localdomain   1/1     Running   0          6d2h
kube-system   kube-proxy-844fj                                1/1     Running   0          6d2h
kube-system   kube-proxy-hlrrd                                1/1     Running   0          6d3h
kube-system   kube-scheduler-localhost.localdomain            1/1     Running   0          6d2h

全部pod处于running阶段

kubectl get nodes

NAME                    STATUS   ROLES                  AGE    VERSION
k8s-node2               Ready    <none>                 6d2h   v1.23.10
localhost.localdomain   Ready    control-plane,master   6d3h   v1.23.10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubernetes集群部署 的相关文章

  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • 向 docker 镜像添加新的入口点

    最近 我们决定将我们的一项服务迁移到 docker 容器 该服务是另一家公司的产品 他们为我们提供了 docker 镜像 但是 我们需要在容器入口点中执行一些额外的配置步骤 我尝试的第一件事是从基础映像创建一个 DockerFile 然后添
  • 无法将 docker 映像推送到本地 OpenShift Origin 注册表

    目标是能够在我的笔记本电脑上获取 Docker 映像并将其推送到 OpenShift Origin 映像注册表 由oc cluster up 进行本地开发 目前尚不清楚我是否做错了什么 或者 Docker 或 OpenShift Origi
  • 如何使用 kubeadm 升级来更改 kubeadm-config 中的某些功能

    我想在现有的 kubernetes 集群 v1 10 上安装 kube prometheus 在此之前 文档说我需要将控制器 调度器的IP地址从127 0 0 1 to 0 0 0 0 并且还推荐使用kubeadm 配置升级 https k
  • 自动备份远程托管服务器的最佳实践

    我正在尝试设置一个用于团队笔记的服务器 我想知道自动备份其数据 又称我的笔记 的最佳方法是什么 目前我计划在 docker 镜像中运行服务器 docker 镜像将由托管服务 例如 Google 托管 我找到了一个适合我的需求的免费托管服务
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • Ingress 未在 GKE 和 GCE 上获取地址

    创建入口时 不会生成地址 并且从 GKE 仪表板查看时 它始终位于Creating ingress地位 描述入口没有显示任何事件 我在 GKE 仪表板上看不到任何线索 有没有人有类似的问题或关于如何调试的任何建议 我的部署 yaml api
  • 我可以更改 Windows Docker 容器中的日期和时间吗?

    我正在尝试测试一个在特定时间段内导出文件的软件 我想到使用 docker 容器来提供所需的时间而不是使用系统时间 问题是我缺乏更改容器时间的权限 并出现以下错误消息 PS C usr src app gt Set Date Date Get
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • 如何在“Docker for Windows”中启用docker远程API

    I have 适用于 Windows 的 Docker 桌面1 12 1 stable 内部版本 7135 安装在我的 Windows 10 计算机上 我想使用以下方式访问 docker远程API https docs docker com
  • 非生产模式下的 Elasticsearch docker 容器可消除 vm.max_map_count=262144 要求

    如何配置 elasticsearch docker 容器 elasticsearch 7 5 0 以使用更少的资源并在非生产模式下运行 我想在 Jenkins 和我的桌面上运行容器 并且满足以下要求这个弹性文档 https www elas
  • Docker COPY 命令可以链接起来吗

    是否可以将 COPY 命令链接在一起 就像使用 RUN 命令可以完成的操作一样 链接运行命令的示例 RUN echo root user 2017 chpasswd groupadd g 1000 user useradd u 1000 m
  • 在 docker 构建期间设置 DNS 选项

    由于本地网络配置 我必须将 dns 和 dns search 选项添加到我的 docker run 命令中 如下所示 docker run dns XX XX 1 1 dns search companydomain t mycontain
  • 我如何知道 k8s 中的网络策略覆盖了哪些 pod

    我有一个用例 我想检查网络策略覆盖哪些 pod 现在我的重点只是 k8s 生成的网络策略 做到这一点最简单的方法是什么 我知道我们可以检查每个网络策略并从那里过滤掉 pod 但是网络策略可以有多种使用 pod 过滤的方式 我不确定是否有办法
  • 无法从外部访问在 docker swarm 上运行的容器

    我正在 docker swarm 上运行我的容器 资产前端service 是我的前端应用程序 它在容器内运行 Nginx 并公开端口 80 现在如果我这样做 curl http 10 255 8 21 80 http 10 255 8 21
  • 如何在 Nextflow 的 Kubernetes 执行器中禁用特权容器执行?

    我正在共享集群中使用 Kubernetes 执行器运行 Nextflow 工作流程 出于安全原因 该集群不允许特权容器 当我运行 nextflow 工作流程时 我收到错误 清楚地表明它正在尝试在特权模式下运行我的作业 job control
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 为什么 Docker 不支持多租户?

    我看了这个关于 Docker 的 YouTube 视频 https www youtube com watch v vb7U 9AO7Ww22 00 演讲者 Docker 产品经理 说道 您可能会想 Docker 不支持多租户 您是对的 但

随机推荐

  • 判断字符串是否以 endStr 为结尾

    String prototype endWith function endStr 判断字符串以 endStr 为结尾 let d this length endStr length return d gt 0 this lastIndexO
  • ubuntu16.04 从源码编译安装caffe(纯CPU版)

    需要做caffe在嵌入式的移植 决定先在X86上理清所有依赖包关系 再做交叉编译 由于目的是用在嵌入式 暂不支持GPU 1 boost 官网 http www boost org Caffe 中主要使用了Boost 的智能指针 新版v1 6
  • python中的字典(Dictionary)

    python中的字典 Dictionary 在Python中 字典 Dictionary 是一种键 值对的无序集合 用于存储和查找具有唯一键的元素 字典提供了一个高效的方式来根据键访问和操作值 特点 字典是无序的 其中的元素没有固定的顺序
  • 51单片机入门——单片机最小系统

    单片机最小系统 1 什么是最小系统 2 最小系统的三要素 2 1 电源 2 2 晶振 2 3 复位电路 2 3 1 外部RST引脚复位 2 3 2 软件复位 2 3 3 上电复位 掉电复位 2 3 4 看门狗复位 2 3 5 冷启动复位和热
  • 从小学开始学机器人编程教育的好处

    不过对于绝大多数孩子来说 情况也许并不是这样 他们学习机器人编程并非一定要成为程序员 更不一定要为将来创业做准备 但是他们同样能从编程学习中获益 获得多方面的思维训练 格物斯坦表示 通过学习编程 除了通常被提及的一些如促进学科知识学习 了解
  • C语言经典100例题(46)--宏#define命令练习(1)

    目录 题目 问题分析 代码 运行结果 题目 宏 define命令练习 1 问题分析 define是宏定义 程序在预处理阶段将用define定义的内容进行了 替换 因此在程序运行时 常量表中并没有用define定义的常量 系统不为它分配内存
  • Navicat 无法连接 MySQL 怎么办?

    本文背景 Navicat 是图形化操作 MySQL 的强大工具 但是当数据库的服务器没有开放 3306 端口给办公网络时 在办公网使用 navicat 连接数据库是连不上的 要操作数据库 只能先 ssh 登陆到数据库服务器 然后在黑屏敲命令
  • 修改网站在浏览器上方显示的logo

    1 准备好要显示的图片 通过百度 ico在线制作 转换成为ico的格式 放在对应的位置中 2 在html的head中添加 3 href是ico的位置 4 刷新页面 清除缓存即可
  • OPC通讯的安全防护

    http www dqjsw com cn dianqi OPC 111931 html OPC通讯的安全防护 OPC 用于过程控制的OLE 被广泛应用在控制系统中 用于提供不同供应商的设备和软件之间的互操作性 最新版本的OPC OPC U
  • 所有项目-环境-教程-链接地址汇总

    一 项目相关 1 项目清单 不定期更新 myDemo源码汇总 qq com 5 成品视频展示网站 https space bilibili com 397822494 因为有部分视频因为部分问题 无法上传 可直接添加作者索要演示视频 2 环
  • 一篇小孩子都能看懂的 ChatGPT 原理解析

    本文作者小宝 85 后程序员 现在蚂蚁金服从事后端架构 爱读书 爱编码 过去半年 随着 ChatGPT 的大火 大模型已经成为一种新的社交货币 现在见面都不是问 天气怎么样 而是你用 ChatGPT 了么 国内各大巨头也纷纷下场 制作自己的
  • Oulipo 【POJ - 3461】【双值哈希】

    题目链接 题意 给你两个字符串 前一个是小字符串 后一个是大的字符串 问你 大的字符串中有几组可以与小的字符串相等的子字符串 此题其实不用双值哈希好像也可以的 但为了确保A就敲了个双值哈希 我们想把字符串的形式用数的值来表示 那么 我们可以
  • (多核DSP快速入门)5.SYS/BIOS的使用实例分析

    原创文章 转载请注册来源http blog csdn net tostq 系列教程目录 http blog csdn net tostq article details 51245979 SYS BIOS是一个可扩展的实时内核 或者说是操作
  • 燕千云ChatGPT应用,用过的都说香

    本期受访人物 张礼军 甄知科技联合创始人 CTO 首席产品官 2022年底 基于人工智能技术驱动的自然语言工具横空出世 一经推出 ChatGPT迅速火遍全球 几乎各行各业都在探索ChatGPT具体业务场景的应用 希望通过ChatGPT来做业
  • 3ar用计算机弹奏,网课计算机网络期末考试参考答案查询

    但也有学者不支持 远程教育 和 远程学习 这两个专业术语可以互换的说法 因为这两个术语有它们各自的特点 5 一般情况下 远程学习被视为一种能力 远程学习中需要根据学习者原有的水平来确定教学内容 教学策略以及评价方式 6 而远程教育只是在远距
  • QT 5 中元对象系统的改变

    Qt 5 的元对象系统作出了一定的改变 既有底层变化 又有 API 的变化 其中有些修改与 Qt 4 不是源代码兼容的 本文将介绍这些改变 以及如何修改现有代码 使其能够使用 Qt 5 进行编译 同时 我们也将阐述下新增加的一些 API 使
  • [面试题]1000瓶毒药里面只有1瓶是有毒的,问需要多少只老鼠才能试出那瓶有毒。

    题目 1000瓶毒药里面只有1瓶是有毒的 毒发时间为24个小时 问需要多少只老鼠才能在24小时后试出那瓶有毒 思路 这题试Bloom Fliter 算法 详情可以参考 https blog csdn net jiaomeng article
  • git 本地项目上传到云端

    1 在云端服务器上生成一个公钥和秘钥 以后再acgit或者github上需要用到 ssh keygen 2 初始化当前文件夹为git仓库 ls a 会多出一个 git 的文件夹 git init 3 在云端创建一个新的项目 4 复制服务器上
  • 课时 12 自测题

    以下哪些是 Kubernetes 中常见的监控场景 多选题 A 资源监控 B 性能监控 C 安全监控 D 事件监控 从功能性的角度而言 Heapster 的 Sink 机制比 Metrics Server 更强大 单选题 A TRUE B
  • kubernetes集群部署

    kubernetes集群部署 环境 master节点部署 安装docker 服务器配置 yum安装 新增yum源 安装kubelet kubeadm kubectl 启动master 查看启动情况 使用配置文件启动 推荐 其他节点部署 首先