K8s 安装部署-Master和Minion(Node)文档

news2024/11/16 7:24:41

K8s 安装部署-Master和Minion(Node)文档

操作系统版本:CentOS 7.4

Master :172.20.26.167

Minion-1:172.20.26.198

Minion-2:172.20.26.210(后增加节点)

ETCD:172.20.27.218

先安装部署ETCD

yum install etcd -y

cd /etc/etcd/

cp etcd.conf etcd.conf.bak    #备份etcd.conf 文件

grep -aivE "#|^$" etcd.conf  #去掉#、空行的显示

[root@localhost etcd]# grep -aivE "#|^$" etcd.conf

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"

ETCD_NAME="default"

ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

vim etcd.conf

[root@localhost etcd]# mkdir -p /data/etcd/  #创建ETCD的数据目录

[root@localhost etcd]# id etcd    #看看ETCD用户

uid=997(etcd) gid=995(etcd) 组=995(etcd)

[root@localhost etcd]# chown -R etcd.etcd /data/etcd/   #对数据目录授权etcd用户和组

[root@localhost etcd]# ls -ld /data/etcd/   #查看数据目录权限

drwxr-xr-x. 2 etcd etcd 6 4月  17 13:32 /data/etcd/

启动ETCD 服务

systemctl start etcd.service

ps -ef |grep -aiE etcd

创建key

etcdctl  mk  /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

安装部署Master

yum install kubernetes-master flannel -y

[root@bogon kubernetes]# vim apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBE_ETCD_SERVERS="--etcd-servers=http://172.20.26.218:2379"

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

因为我们没有配置账号和密码,所以要把“ServiceAccount,”删除掉,否则会出问题

[root@bogon kubernetes]# vim config

KUBE_ALLOW_PRIV="--allow-privileged=true"

KUBE_MASTER="--master=http://172.20.26.167:8080"

[root@bogon kubernetes]# systemctl start kube-apiserver

[root@bogon kubernetes]# systemctl start kube-controller-manager

[root@bogon kubernetes]# systemctl start kube-scheduler

[root@bogon]#ps -ef | grep kube

 查看kube-apiserver、kube-controller-manager、kube-scheduler服务进程都起来了,到此Master 端部署完成。

也可以使用for I in 命令重新启动各个服务:

for  I  in  etcd  kube-apiserver  kube-controller-manager kube-scheduler;  do

systemctl restart  $I

systemctl enable  $I

systemctl status   $I

done

安装部署(Node)Minion端

yum install kubernetes-node docker flannel *rhsm* -y

[root@bogon ~]# cd /etc/kubernetes/

[root@bogon kubernetes]# vim config

KUBE_ALLOW_PRIV="--allow-privileged=true"  在web管理界面中,让勾选“以特权身份运行”生效

KUBE_MASTER="--master=http://172.20.26.167:8080"

 [root@bogon kubernetes]# vim kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=172.20.26.198"

KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"

vim /etc/sysconfig/flanneld  #配置flannel网络

service flanneld start  #先启动flanneld服务

service docker start   #再启动docker 服务

在Master端也要配置flannel网络

[root@bogon ~]# vim /etc/sysconfig/flanneld 

service flanneld start  #启动flanneld服务

回到Minion端

启动kubelet、kube-proxy服务

[root@bogon ~]# service kubelet start

Redirecting to /bin/systemctl start kubelet.service

[root@bogon ~]# service kubelet restart

Redirecting to /bin/systemctl restart kubelet.service

[root@bogon ~]# service kube-proxy start

Redirecting to /bin/systemctl start kube-proxy.service

查看相关进程

[root@bogon ~]# ps -ef |grep kube

[root@bogon ~]# ps -ef |grep docker

[root@bogon ~]# ps -ef |grep flanneld

至此Minion端配置完成。

在Master端输入kubectl get nodes  验证是否成功?看到STATUS 的状态为Read 即可

[root@bogon ~]# kubectl get nodes

在Master端查看IP地址信息

在Minion端查看IP地址信息

在Master端查看FORWARD参数策略是否为ACEEPT(允许)?

[root@bogon ~]# iptables -t filter -L -n

Ping Minion端IP地址是通的

[root@bogon ~]# ping 172.17.60.1

[root@bogon ~]# ping 172.17.60.0

在Minion 端ping 172.17.34.0 看是否通

至此,Master和Minion端网络已打通。

在Minion端查看FORWARD 规则参数为DROP(丢弃)状态

需要将FORWARD 规则设置为ACCEPT(允许)状态

[root@bogon ~]# iptables -P FORWARD ACCEPT

[root@bogon ~]# iptables -t filter -L -n

K8S集群搭建完成。

创建K8S的web 管理界面

Minion导入两个镜像文件:pod-infrastructure、kubernetes-dashboard-amd64

这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。

Docker镜像导入指令如下:

docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:

docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure

docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:

docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3

然后在Master端,上传两个yaml文件:dashboard-controller.yaml、dashboard-service.yaml

在Master 端创建k8s目录,将dashboard-controller.yaml、dashboard-service.yaml 移动到k8s目录下

然后修改一下dashboard-controller.yaml文件里的api地址

[root@bogon k8s]# vim dashboard-controller.yaml

保存退出

创建dashboard dashborad pods模块

kubectl create -f dashboard-controller.yaml

kubectl create -f dashboard-service.yaml

[root@bogon k8s]# kubectl get pods -n kube-system

看到STATUS状态为Running ,表示web界面配置成功。

通过浏览器访问Master端IP地址的8080端口

http://172.20.26.167:8080

在http://172.20.26.167:8080后面加上ui 即可访问k8s的web界面

http://172.20.26.167:8080/ui

制作centOS7镜像,先上传一个centos7-ansible镜像包,使用Dockerfile 文件制作镜像

vim Dockerfile

mkdir -p /Docker

将Dockerfile 文件移动到/Docker目录下

mv Dockerfile /Docker/

cd /Docker

docker build -t centos7-ssh:v1 .

在k8s管理界面,点击“创建”,新建一个名称为centos7容器,容器镜像:centos7-ssh:v1,显示高级选项,勾选“以特权身份运行”,点击“部署”

Centos7容器创建完成,点击“容器组”里的“centos7-3728401273-pzr09”新建容器名,

也可以点击右上角的“运行命令“按钮,进入命令行界面

也可以通过Minion端通过ssh 连接进入这个容器

创建部署nginx容器

可以对nginx容器进行扩容多个

再增加Node(Minion)节点

yum install kubernetes-node docker flannel* *rhsm* -y

[root@bogon ~]# cd /etc/kubernetes/

编辑

[root@bogon kubernetes]# vim config

KUBE_ALLOW_PRIV="--allow-privileged=true"  在web管理界面中,让勾选“以特权身份运行”生效

KUBE_MASTER="--master=http://172.20.26.167:8080"

[root@bogon kubernetes]# vim kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=172.20.26.210"

KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"

[root@bogon /]# vim /etc/sysconfig/flanneld   配置flannel网络

FLANNEL_ETCD_ENDPOINTS="http://172.20.218:2379"

service flanneld start  先启动flanneld服务

flanneld服务无法启动,报错

将Minion端系统重启一下,

再执行service flanneld start  启动flanneld服务

service docker start  #再启动docker 服务

启动kubelet、kube-proxy服务

[root@bogon ~]# service kubelet start

Redirecting to /bin/systemctl start kubelet.service

[root@bogon ~]# service kubelet restart

Redirecting to /bin/systemctl restart kubelet.service

[root@bogon ~]# service kube-proxy start

Redirecting to /bin/systemctl start kube-proxy.service

也可以用for I in命令启动服务

for  I  in  kube-proxy  kubelet  flanneld docker

do

systemctl  restart  $I

systemctl  enable  $I

done

service iptables stop;iptables -P FORWARD ACCEPT

查看相关进程

[root@bogon ~]# ps -ef |grep kube

[root@bogon ~]# ps -ef |grep docker

[root@bogon ~]# ps -ef |grep flanneld

至此新增加的Node(Minion)节点配置完成。

在Master端输入kubectl get nodes  验证是否成功?看到STATUS 的状态为Read 即可

[root@bogon ~]# kubectl get nodes

回到k8s 管理界面,查看节点情况,172.20.26.210节点成功增加

创建K8S的web 管理界面

因没有创建本地仓库,所以需要Minion再导入pod-infrastructure、kubernetes-dashboard-amd64两个镜像文件。如果已创建好本地仓库,在第一次部署Minion节点时,将pod-infrastructure、kubernetes-dashboard-amd64镜像上传到本地仓库即可。

这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。

Docker镜像导入指令如下:

docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:

docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure

docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:

docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3

回到k8s管理界面,查看节点数量

新部署tomcat容器,数量为2,将会在两个节点中分别创建1台tomcat容器。

由于是在网上下载tomcat 镜像,需要等待时间较长,最后完成情况如下

在master控制端查看所有云主机的IP 地址

[root@bogon ~]# kubectl get -n default pods -o wide

[root@bogon ~]# kubectl get -n default pods -o wide|awk '{print $1,$6}'|awk -F"-" 'NR>1 {print $1,$NF}'|awk '{print $1,$NF}'

可以通过宿主机重启容器

[root@bogon ~]# docker ps |grep tomcat   查看tomcat容器ID

[root@bogon ~]# docker restart 574bf1497167    重启tomcat容器

重启,数据不会丢失

如果是删除云主机,会自动产生一台云主机,但是数据丢失

创建本地私有仓库

在172.20.26.198上创建本地私有仓库

docker pull docker.io/registry

mkdir -p  /data/registry/

docker run -itd  -p  5000:5000 -v /data/registry:/var/lib/registry  docker.io/registry

[root@bogon ~]# vim /etc/docker/daemon.json

"insecure-registries":["172.20.26.198:5000"]

[root@bogon ~]# service docker restart

[root@bogon ~]# ps -ef |grep 5000   查看5000端口状态

Docker images 查看一下镜像信息

对centos7-ssh镜像修改tag号

[root@bogon ~]# docker tag 5a97f88791d1 172.20.26.198:5000/centos7-ssh:v1

将修改好tag号的centos7-ssh镜像上传到本地仓库中

docker push 172.20.26.198:5000/centos7-ssh:v1

[root@bogon ~]# docker ps -a   查看docker 容器情况docker.io/registry

[root@bogon ~]# docker start bf5bd542fba4  启动docker.io/registry

[root@bogon ~]# ps -ef |grep 5000  查看5000端口情况

[root@bogon ~]# docker push 172.20.26.198:5000/centos7-ssh:v1  再次上传镜像到本地仓库

上传成功

上传一个nginx镜像到本地仓库

[root@bogon Docker]# vim Dockerfile_nginx    编写安装nginx的Dockerfile文件

[root@bogon Docker]# docker build -t centos7-nginx:v1 - < Dockerfile_nginx

[root@bogon ~]# docker images

[root@bogon ~]# docker tag 0672328a3122 172.20.26.198:5000/centos7-nginx:v1 修改tag号

[root@bogon ~]# docker push 172.20.26.198:5000/centos7-nginx:v1  上传nginx镜像到本地仓库

[root@bogon ~]# docker ps | grep 5000

查看本地私有仓库里的镜像

ls -l /data/registry/docker/registry/v2/repositories/

添加2个nginx“外部”服务的容器,使用本地私有仓库

Failed to pull image "172.20.26.198:5000/nginx:latest": Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ErrImagePull: "Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client"

以上错误原因是在172.20.26.210节点上daemon.json文件里要指定本地私有仓库的地址,

vim /etc/docker/daemon.json

执行以下命令,重启相关服务

for  I  in  kube-proxy  kubelet  flanneld docker

do

systemctl  restart  $I

systemctl  enable  $I

done

service iptables stop;iptables -P FORWARD ACCEPT

回到k8sweb界面,查看错误状态是否已消失

故障问题:

用Dockerfile 做了个镜像,改了tag号,push 到本地仓库,提示连接被拒绝

解决:

docker run -itd  -p  5000:5000 -v /data/registry:/var/lib/registry  docker.io/registry

docker ps

docker push 172.20.26.198:5000/centos7-nginx:v2

创建部署外部nginx主机

故障问题:

故障问题

Master、Minion端排查解决:

Master端:

1、ps -ef | grep kube 查看kube-apiserver、kube-controller-manager、kube-scheduler服务

2、 ps -ef |grep flanneld  查看flanneld的状态

3、ifconfig 查看网卡地址情况(是否有flannel0地址)

Minion端:

1、ps -ef |grep kube 查看kubelet、kube-proxy服务

2、ps -ef |grep docker  查看Docker状态

3、 ps -ef |grep flanneld 查看flanneld的状态

4、iptables -t filter -L -n  查看是否是Chain FORWARD (policy ACCEPT)状态,如不是,执行iptables -P FORWARD ACCEPT命令

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

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

相关文章

如何用GPT快速写论文?

详情点击链接&#xff1a;如何用GPT快速写论文&#xff1f; 第一&#xff1a;2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二&#xff1a;Op…

CVE-2024-23897 Jenkins 任意文件读取漏洞

项目介绍 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。Jenkins是开源CI&CD软件领导者&#xff0c; 提供超过1000个插…

以太网的 MAC 层

目录 1. MAC 层的硬件地址 48 位的 MAC 地址 2. MAC 帧的格式 以太网 V2 的 MAC 帧格式 无效的 MAC 帧 IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别 1. MAC 层的硬件地址 硬件地址又称为物理地址&#xff0c;或 MAC 地址。 IEEE 802 标准为局域网规定了一种 48 位…

多维数组的使用

1. 数组的概念 数组(Array)&#xff1a;是多个相同类型数据按一定顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c;并通过编号的方式对这些数据进行统一管理。 数组中的概念&#xff1a; – 数组名 – 下标&#xff08;或索引&#xff09; – 元素 – 数组的长度 …

flink-java使用介绍,flink,java,DataStream API,DataSet API,ETL,设置 jobname

1、环境准备 文档&#xff1a;https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/ 仓库&#xff1a;https://github.com/apache/flink 下载&#xff1a;https://flink.apache.org/zh/downloads/ 下载指定版本&#xff1a;https://archive.apache.org/dist/flink…

【Leetcode】2861. 最大合金数

文章目录 题目思路代码结果 题目 题目链接 假设你是一家合金制造公司的老板&#xff0c;你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用&#xff0c;并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。 对于第 i 台…

Redis(八)哨兵机制(sentinel)

文章目录 哨兵机制案例认识异常 哨兵运行流程及选举原理主观下线(Subjectively Down)ODown客观下线(Objectively Down)选举出领导者哨兵选出新master过程 哨兵使用建议 哨兵机制 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新…

深入理解STM32中断处理机制

深入理解STM32中断及其使用方法&#xff08;基于HAL库&#xff09; STM32微控制器作为一款强大的嵌入式系统芯片&#xff0c;在各种应用中都需要使用中断来实现实时响应和处理各种事件。本文将深入讨论STM32中断的概念、HAL库的中断处理机制以及如何在STM32CubeMX中配置和使用…

AI编译器的后端优化策略

背景 工作领域是AI芯片工具链相关&#xff0c;很多相关知识的概念都是跟着项目成长建立起来&#xff0c;但是比较整个技术体系在脑海中都不太系统&#xff0c;比如项目参与中涉及到了很多AI编译器开发相关内容&#xff0c;东西比较零碎&#xff0c;工作中也没有太多时间去做复盘…

特征点匹配 harris

算法的核心是利用局部窗口在图像上进行移动&#xff0c;判断灰度是否发生较大的变化。如果窗口内的灰度值&#xff08;在梯度图上&#xff09;都有较大的变化&#xff0c;那么这个窗口所在区域就存在角点。 这样就可以将 Harris 角点检测算法分为以下三步&#xff1a; 当窗口…

java/node代码 破解“滑动验证码”的移动距离

1.直接上代码结论 import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL;p…

【C++中的STL】函数对象

函数对象 函数对象概念谓词概念 内建函数对象算术仿函数关系仿函数逻辑仿函数&#xff08;基本用不到&#xff09; 函数对象概念 重载函数调用操作符的类&#xff0c;其对象常称为函数对象&#xff0c;函数对象使用重载的()时。行为类似函数调用&#xff0c;也叫仿函数。 函数…

2024年2月最新python批量下载快手个人主页短视频代码(带翻页)

python批量下载快手个人主页短视频代码&#xff0c;2024年1月27日测试过了&#xff0c;如果日后更新了&#xff0c;私聊我 快手个人主页分视频和直播回放&#xff0c;直播回放的地址是m3u8&#xff0c;视频的地址是mp4 m3u8我采用的是hm3u8dl_cli这个库就行下载&#xff0c;带…

HarmonyOS Web组件

1. 前言 众所周知&#xff0c;在Android系统App开发中&#xff0c;我们往往会直接跳转到网页。比如微信给你发了一个链接&#xff0c;默认也是在App之内打开的。很多App就只使用一个WebView作为整体框架&#xff0c;这样开发的好处是&#xff0c;只要使用少量的代码即可完成交互…

文本分类识别系统Python+卷积神经网络算法+TensorFlow+Django网页界面

一、介绍 文本分类系统&#xff0c;使用Python作为主要开发语言&#xff0c;通过选取的中文文本数据集&#xff08;“体育类”, “财经类”, “房产类”, “家居类”, “教育类”, “科技类”, “时尚类”, “时政类”, “游戏类”, “娱乐类”&#xff09;&#xff0c;基于Te…

企业培训APP:在线教育系统源码开发指南

本篇文章&#xff0c;小编将为读者讲解如何开发一款功能强大的企业培训APP&#xff0c;以及其中的关键源码开发指南。 一、确定需求与功能模块 在着手开发之前&#xff0c;首先需要明确企业培训APP的需求和功能模块。这包括用户注册与登录、课程管理、学员管理、在线考试、成绩…

Android发展历程及安装

目录 发展历程 下载网址 安装过程 发展历程 安卓基于Linux内核&#xff0c;Linux内核相当于房屋的地基 开源不等于免费&#xff0c;不能商用 安卓一般每半年小更新&#xff0c;一年大更新 对应API相当于别名 现在安卓安全性越来越高&#xff0c;性能越来越快&#xff0c…

提升养殖场效益,从饲料粉碎机开始

为了提高养殖效益&#xff0c;养殖户可以从很多方面着手&#xff0c;其中饲料成本是一个重要的因素。为了降低饲料成本&#xff0c;养殖户可以考虑从饲料粉碎环节入手。通过购买和采用高效、低成本的饲料粉碎机&#xff0c;养殖户可以更好地控制饲料成本&#xff0c;提高饲料的…

惊天秘闻-绕过安全设置悄悄导入VBA代码

免责声明&#xff1a; 本文所提供的VBA代码仅供学习和参考之用。作者对用户使用此代码可能产生的任何后果概不负责&#xff0c;包括但不限于数据损失、程序错误或其他不良影响。 使用VBA开发工具时&#xff0c;为了实现动态代码更新&#xff0c;将会用到导入代码模块&#xff0…

为什么网页打开慢?是服务器的问题吗?

当我们遇到网页加载缓慢时&#xff0c;首先想到的可能是服务器的问题。的确&#xff0c;服务器是影响网页加载速度的一个重要因素。然而&#xff0c;这并非是唯一的原因。实际上&#xff0c;网页加载速度受多种因素影响&#xff0c;包括但不限于服务器、网络带宽、DNS解析时间、…