当前位置: 首页 > news >正文

K8S集群再搭建

 前述:总体是非常简单的,就是过程繁琐,不过都是些重复的操作

master成员: [controller-manager, scheduler, api-server, etcd, proxy,kubelet]

node成员:    [kubelet, proxy]

=====master要修改的配置文件有=====

1. vi /etc/etcd/etcd.conf  # 数据存储目录/对外监听地址/本机ip

2. vi /etc/kubernetes/apiserver #开放api-server端口/指明监听奴隶节点端口/指明etcd地址

3. vi /etc/kubernetes/config   # 告诉proxy api-server是谁?

4. vi /etc/kubernetes/kubelet # 注册自己信息,并将告诉自己的master是是谁?

=====node要修改的配置文件有=====

1. vi /etc/kubernetes/config    # 告诉proxy api-server是谁?

2. vi /etc/kubernetes/kubelet  # 注册自己信息,并将告诉自己的master是是谁?

小结:master节点就多配置2个,其它跟node无二差别 ,节点要关闭防火墙或者开发对映的端口,要不然,node无法加入master

进入正题。。。。。。。。。。

================Master======================

1. 安装etcd服务

### 准备3个节点并修改节点hostname

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

### 配置3个节点的域名解析

vi /etc/hosts

```

192.168.208.161 k8s-master
192.168.208.162 k8s-node1
192.168.208.163 k8s-node2

```

### master节点下载数据库ETCD

yum install -y etcd

vi /etc/etcd/etcd.conf

```

# 数据存储目录

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

# 监听地址,设置任意ip都可以访问
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

# 如果配置etcd集群,名称必须不一样
ETCD_NAME="default"

# master节点的IP
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.208.160:2379"

```

### 启动ETCD并设置开机自启

systemctl restart etcd
systemctl enable etcd

 2. 安装kubernetes-master包含了apiserver、controller-manager、scheduler

yum install -y kubernetes-master.x86_64

vi /etc/kubernetes/apiserver

```

#如果仅限本地访问可以设置成本机IP
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

#开放apiserver端口的节点将属于master节点
KUBE_API_PORT="--port=8080"

#奴隶节点的端口,奴隶节点是什么端口就配置什么端口
KUBELET_PORT="--kubelet-port=10250"

#奴隶节点的端口
KUBELET_PORT="--kubelet-port=10250"

```

vi /etc/kubernetes/config

```

#为controller-manager, scheduler, and proxy指明api-server
KUBE_MASTER="--master=http://192.168.208.160:8080"

```

### 启动 api-server、controller-manager、scheduler

systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service

# 顺手设置开机自启

systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service

### 检查主节点成员状态,这里的api-server不会显示,能执行kubectl命令说明api-server正常,kube-proxy 需要安装kubernetes-node时才会安装,一并安装还有kubelet
kubectl get componentstatus

===============Node====================

1. 安装kubernetes-node 包含 poxy、kubelet, 还有会自动安装docker哦!!

####master自己也成为奴隶节点

yum install -y kubernetes-node.x86_64

vi /etc/kubernetes/kubelet

```

#奴隶节点联系上司的地址(这里master也是奴隶,自己监听自己,其它奴隶节点192.168.208.161、192.168.208.162)
KUBELET_ADDRESS="--address=192.168.208.160"

#这个端口要跟master监听的端口保持一致,因为master的配置监听端口,就是按照下面的端口配置的
KUBELET_PORT="--port=10250"

# 奴隶节点的身份信息,可以是IP,也可以域名(必须先配置域名解析,开始就做好了,其它奴隶节点是 k8s-node1 、k8s-node2)
KUBELET_HOSTNAME="--hostname-override=k8s-master"

# 指明api-server

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

```

### 启动kubelet、proxy 会带着启动docker

systemctl start kubelet.service

systemctl start kube-proxy.service

systemctl enable kubelet.service

systemctl enable kube-proxy.service

### 剩余的k8s-node1、k8s-node2 重复操作2次就好,下面配上截图

k8s-master 、k8s-node1、k8s-node2都一样的

 

上面集群简单的集群已经搭建好,后续要安装网络插件ssh 用于节点之间的通信

后续。。。。。。。

yum install -y flannel

vi /etc/sysconfig/flanneld

```

# 使用etcd作为pod的IP注册中心

FLANNEL_ETCD_ENDPOINTS="http://192.168.208.160:2379"

# 使用默认的前缀

FLANNEL_ETCD_PREFIX="/atomic.io/network"

```

###该ip网段可以任意设定,随便设定一个网段都可以。Pod里的容器的ip就是根据这个网段进行自动分配的,下面截图会解释

etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }'

etcdctl get /atomic.io/network/config

systemctl start flanneld.service
systemctl enable flanneld.service

# 重启dockers后,docker的ip网段也会变的一样

systemctl restart docker

同理配置奴隶节点 k8s-node1  k8s-node2,但不要执行etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }',etcd只在主节点,node节点是没有的

至此,已经安装好网络插件flannel ,接下安装一个测试沙箱,测试不同节点上容器是否能正常通讯

docker pull busybox:1.27

docker images

docker run -it <镜像id>

> ifconfig

> 找到本容器的ip

同理在另外一个节点看看  找到本容器的ip

ping  172.10.xxx.xxx

master节点成功ping通2个node节点

如果出现iptables 如下,我这个默认是ACCEPT,所以不用修改

# 修改命令,3个节点都要修改,如果。。。。但是这种设置是临时的重启失效(可以忽略)直接看iptables永久配置

iptables -P FORWARD ACCEPT

 iptables永久配置:

systemctl daemon-reload 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode119-Pascal‘s Triangle II
  • 逻辑分析仪 - 采样率/采样深度
  • Android Audio基础——AudioFlinger音频流管理(八)
  • 释放Mac潜能,选择Magic Disk Cleaner for Mac
  • MPC源码解读及路径跟踪demo
  • 抖音无货源如何做?
  • 犀牛8 for Mac/Win:重塑三维建模的新标杆
  • kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路
  • 03-ArcGIS For JavaScript结合ThreeJS功能
  • vue项目实战 - 如果高效的实现防抖和节流
  • 软考-程序员 知识点与部分真题梳理
  • qt多语言翻译不生效的原因
  • 回溯大法总结
  • microsoft的azure语音,开发环境运行正常,发布到centos7线上服务器之后无法运行解决方案
  • OneAPI接入本地大模型+FastGPT调用本地大模型
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017 年终总结 —— 在路上
  • Akka系列(七):Actor持久化之Akka persistence
  • angular2 简述
  • Asm.js的简单介绍
  • exif信息对照
  • golang中接口赋值与方法集
  • JavaScript-Array类型
  • KMP算法及优化
  • Lucene解析 - 基本概念
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Python语法速览与机器学习开发环境搭建
  • Vue全家桶实现一个Web App
  • Web设计流程优化:网页效果图设计新思路
  • 从零开始学习部署
  • 浮现式设计
  • 开源地图数据可视化库——mapnik
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 跳前端坑前,先看看这个!!
  • 推荐一个React的管理后台框架
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我有几个粽子,和一个故事
  • 小程序测试方案初探
  • 延迟脚本的方式
  • 原生JS动态加载JS、CSS文件及代码脚本
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 阿里云服务器如何修改远程端口?
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • #pragam once 和 #ifndef 预编译头
  • #数据结构 笔记一
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (python)数据结构---字典
  • (备份) esp32 GPIO
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (三)Honghu Cloud云架构一定时调度平台
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转) Android中ViewStub组件使用