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

相关推荐
mounter62510 分钟前
Linux 7.0 重磅更新:详解 nullfs 如何重塑根文件系统挂载与内核线程隔离
linux·运维·服务器·kernel
色空大师25 分钟前
【网站搭建实操(一)环境部署】
java·linux·数据库·mysql·网站搭建
A.A呐2 小时前
【Linux第十三章】缓冲区
linux·服务器
想唱rap2 小时前
Linux线程
java·linux·运维·服务器·开发语言·mysql
yuzhuanhei3 小时前
docker常用命令
运维·docker·容器
anarckk3 小时前
docker volume 导入导出命令
运维·docker·容器
cccccc语言我来了3 小时前
Linux(9)操作系统
android·java·linux
Lueeee.3 小时前
Linux驱动中为什么既有 sysfs,又有字符设备?以 DHT11 驱动为例彻底讲透
linux·驱动开发
Brandon汐3 小时前
从0开始搭建一主两节点k8s集群对接Ceph集群
ceph·容器·kubernetes