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

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.mzph.cn/news/650167.shtml

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

相关文章

navicat 可以直接往 mysql导入excel表格

妈呀 还好 提前问了一下&#xff0c;不然哼哧哼哧在那里写&#xff0c;导入接口。。

05-TiDB 之 HTAP 快速上手

混合型在线事务与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 功能 HTAP 存储引擎&#xff1a;行存 与列存 同时存在&#xff0c;自动同步&#xff0c;保持强一致性。行存 OLTP &#xff0c;列存 OLAPHTAP 数据一致性&#xff1a;作为一个分布式事务…

【王道数据结构】【chapter2线性表】【P43t15】

单链表有环&#xff0c;是指单链表的最后一个节点的指针指向了链表中的某个结点&#xff08;通常单链表的最后一个节点的指针域是空的&#xff09;。试编写算法判断单链表是否存在环。 #include <iostream>typedef struct node{int data;node* next; }node,*list;list I…

递归方法猴子吃桃问题

public class A {public static void main(String[] args) {System.out.println("第一天有&#xff1a;"f(1)"个");System.out.println("第二天有&#xff1a;"f(2)"个");System.out.println(".....");System.out.println(&…

代码随想录算法训练营第32天(贪心算法02● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

贪心算法 part02 122.买卖股票的最佳时机II解题思路 55. 跳跃游戏解题思路 45.跳跃游戏II &#xff08;来不及了 明天刷解题思路 122.买卖股票的最佳时机II 动态规划章节会重点讲买卖股票问题 本题解法很巧妙&#xff0c;大家可以看题思考一下&#xff0c;在看题解。 题目链接&…

C语言之指针的地址和指向的内容总结(八十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

前端工程化之:CSS工程化+Less

一、什么是Less&#xff1f; Less官网 Less中文网 Less 是一种更加简洁的样式代码&#xff0c;它非常像 CSS &#xff0c;但又不太一样&#xff0c;它让编写样式变得更容易。 Less 代码虽好&#xff0c;但它无法被浏览器识别&#xff0c;因此需要一个工具将其转换为纯正的 CS…

Christmas Trees(ACabc334-b)

总结&#xff1a;遇到与X轴相关问题考虑三种情况&#xff1a;都是正的&#xff0c;都是负的&#xff0c;一正一负&#xff08;这种情况下比前两者多了一个0&#xff09;。

单片机设计_智能蓝牙电子秤(51单片机、HX711AD)

想要更多项目私wo!!! 一、电路设计 智能蓝牙电子称由51单片机、HX711AD称重模块、HC-05蓝牙模块、LCD1602等电路组成硬件部分,然后上传至APP。 二、运行结果 三、部分代码 #include "main.h" #include "HX711.h" #include "uart.h" #include …

【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…

Redis客户端之Jedis(一)介绍

目录 一、Jedis介绍&#xff1a; 1、背景&#xff1a; 2、Jedis连接池介绍&#xff1a; 二、Jedis API&#xff1a; 1、连接池API 2、其他常用API&#xff1a; 三、SpringBoot集成Jedis&#xff1a; 1、Redis集群模式&#xff1a; &#xff08;1&#xff09;配置文件…

vue3项目中typescript如何export引入(imported)的interface

引入接口后&#xff0c;不能原封不动地直接export出去。 typescript支持面向对象语言中常见的接口&#xff08;interface&#xff09;、类&#xff08;class&#xff09;等。但我近几天发现&#xff0c;一个interface&#xff0c;通过import引入后&#xff0c;如果直接再expor…

【HarmonyOS应用开发】TypeScript快速入门(二)

内容比较长&#xff0c;干货满满&#xff0c;全是实战操作内容&#xff0c;希望耐心观看&#xff0c;如果对你有所帮助&#xff0c;请点个赞&#xff01; ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI…

桌球室台球房计费系统的安装方法,台球厅计时计费管理系统软件试用版教程

桌球室台球房计费系统的安装方法&#xff0c;台球厅计时计费管理系统软件试用版教程 一、前言 1、软件的安装方法&#xff1a; 如图&#xff0c;我们以 佳易王桌球计时计费软件V18.0版本为例说明。软件下载后的文件是压缩包文件&#xff0c;将文件解压后&#xff0c;将文件夹…

Blender教程-视图分割与3D游标-05

一、简介 Blender试图分割的作用主要有以下几点&#xff1a; 多角度查看模型&#xff1a;通过视图分割&#xff0c;用户可以从多个角度查看和比较模型&#xff0c;更好地理解和评估模型的细节和比例。多模型处理&#xff1a;当你在Blender中同时处理多个模型时&#xff0c;视…

AWS 专题学习 P11 (Machine Learning)

文章目录 专题总览机器学习服务1. Amazon Rekognition2. Amazon Rekognition - Content Moderation3. Amazon Transcribe4. Amazon Polly5. Amazon Polly - Lexicon & SSML6. Amazon TranscribeAmazon Translate7. Amazon Lex & Connect8. Amazon Comprehend9. Amazon …

k8s实例

k8s实例举例 &#xff08;1&#xff09;Kubernetes 区域可采用 Kubeadm 方式进行安装。 &#xff08;2&#xff09;要求在 Kubernetes 环境中&#xff0c;通过yaml文件的方式&#xff0c;创建2个Nginx Pod分别放置在两个不同的节点上&#xff0c;Pod使用动态PV类型的存储卷挂载…

DolphinDB学习(2):增删改查数据表(分布式表的基本操作)

文章目录 创建数据表1. 创建数据表全流程2. 核心&#xff1a;创建table3. 在已有的数据表中追加新的数据 数据表自身的操作1. 查询有哪些数据表2. 删除某张数据表3. 修改数据表的名称 博客里只介绍最常见的分区表&#xff08;createPartitionedTable&#xff09;的创建方法&…

机器学习笔记:地理加权回归(GWR)

1 传统的线性回归 机器学习笔记&#xff1a;线性回归_线性回归的读书笔记-CSDN博客 最优的β为&#xff1a; 2 地理加权回归&#xff08;GWR&#xff09; 2.1 模型概述 地理加权回归&#xff08;Geographically Weighted Regression&#xff0c;GWR&#xff09;是传统回归分…

详解矩阵的LDU分解

目录 一. 矩阵分解 二. 解方程 三. 例题说明 四. 矩阵的LDU分解 五. 矩阵三角分解的唯一性 一. 矩阵分解 其实我们可以把一个线性系统&#xff08;Linear System&#xff09;看成两个三角系统&#xff08;Triangular Systems&#xff09;&#xff0c;本文章将解释为什么可…