yum安装k8s集群----基于centos7.9

一、环境搭建

1、准备环境

计算机说明,建议系统版本centos7.9

|------------|-----------------|-------------|-----------------------------------------------------------------------|
| 主机名 | IP 地址 | 角色 | 硬件 |
| k8s-master | 192.168.100.131 | Master,node | Etcd、apiserver、controlor-manager、scheduler、kube-proxy、docker、registry |
| K8s-node1 | 192.168.100.132 | Node | Kubelet、kube-proxy、docker |
| K8s-node2 | 192.168.100.133 | Node | Kubelet、kube-proxy、docker |

2、关闭防火墙

bash 复制代码
[root@huyang1 ~]# systemctl stop firewalld
[root@huyang1 ~]# iptables -F
[root@huyang1 ~]# setenforce 0

3、修改 master 主机的计算机名设置host文件

bash 复制代码
[root@centos01 ~]# hostname k8s-master
[root@centos01 ~]# bash
[root@k8s-master ~]# vim /etc/hosts
bash 复制代码
[root@k8s-master ~]# scp /etc/hosts k8s-node01:/etc/hosts
[root@k8s-master ~]# scp /etc/hosts k8s-node02:/etc/hosts
bash 复制代码
[root@centos02 ~]# hostname  k8s-node01
[root@centos02 ~]# bash
bash 复制代码
[root@centos03 ~]# hostname  k8s-node02
[root@centos03 ~]# bash

二、安装部署

(一)安装 master 节点

1)安装 etcd 配置etcd

[root@k8s-master ~]# yum -y install etcd

[root@k8s-master ~]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

bash 复制代码
[root@k8s-master ~]# vim /etc/etcd/etcd.conf
6 ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
21 ETCD_ADVERTISE_CLIENT_URLS=http://192.168.100.131:2379
bash 复制代码
[root@k8s-master ~]# systemctl start etcd
[root@k8s-master ~]# systemctl enable etcd

2)安装k8s-master节点

[root@k8s-master ~]#yum -y install kubernetes-master.x86_64

3)配置apiserver

[root@k8s-master ~]# ls /etc/kubernetes/

bash 复制代码
[root@k8s-master ~]# vim /etc/kubernetes/apiserver
配置如下:
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"  //修改监听IP地址
12 KUBE_API_PORT="--port=8080"       //监听端口
16 KUBELET_PORT="--kubelet-port=10250"     //kubelet监听端口
19 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.100.131:2379" //连接etcd
24 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

4)配置 controller 和scheduler

[root@k8s-master ~] # vim /etc/kubernetes/config

配置如下:

22 KUBE_MASTER="--master=http://192.168.100.131:8080"

5)启动k8s服务

bash 复制代码
[root@k8s-master ~]# systemctl start kube-apiserver.service kube-controller-manager.service  kube-scheduler.service
[root@k8s-master ~]# systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service

6)检查节点安装都是健康的

[root@k8s-master ~]# kubectl get componentstatus

(二)安装k8s-master上的node

1)安装node

[root@k8s-master ~]# yum -y install kubernetes node.x86_64

docker版本冲突

错误 :docker-ce-cli conflicts with 2:docker-1.13.1-102.git7f2769b.el7.centos.x86_64

问题 : 造成该错误的主要原因是由于安装k8s过程中会自动依赖安装docker,但是由于本地已经安装了其他版本的docker,造成依赖关系检查不通过

解决方案:

卸载本地已安装docker

yum list installed | grep docker

bash 复制代码
yum -y remove docker-buildx-plugin.x86_64 docker-ce-cli.x86_64 docker-compose-plugin.x86_64    

yum -y install kubernetes-node.x86_64

docker version

2)配置kubelet

bash 复制代码
[root@k8s-master ~]# vim /etc/kubernetes/kubelet
配置如下:
5 KUBELET_ADDRESS="--address=192.168.100.131"      //监听IP地址
11 KUBELET_HOSTNAME="--hostname-override=k8s-master"    //监听计算机名
14 KUBELET_API_SERVER="--api-servers=http://192.168.100.131:8080"  //监听apiserver端口

3)启动kubelet启动自动启动docker服务

[root@k8s-master ~]# systemctl start kubelet

[root@k8s-master ~]# systemctl enable kubelet

4)启动kubelet-proxy

[root@k8s-master ~]# systemctl start kube-proxy

[root@k8s-master ~]# systemctl enable kube-proxy

5)检查node节点

[root@k8s-master ~]# kubectl get nodes

(三)安装配置k8s-node1节点

1)安装node

[root@k8s-node1 ~]# yum install kubernetes-node.x86_64

2)node1连接k8s-master

[root@k8s-node01 ~]# ls /etc/kubernetes/

bash 复制代码
[root@k8s-node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.100.131:8080"

3)配置kubelet

bash 复制代码
[root@k8s-node1 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.100.132"
11 KUBELET_HOSTNAME="--hostname-override=k8s-node1"
15 KUBELET_API_SERVER="--api-servers=http://192.168.100.131:8080"

4)启动服务

[root@k8s-node1 ~]# systemctl start kubelet

[root@k8s-node1 ~]# systemctl start kube-proxy

[root@k8s-node1 ~]# systemctl enable kubelet

[root@k8s-node1 ~]# systemctl enable kube-proxy

5)在 master 节点检测node节点状态

[root@k8s-master ~]# kubectl get nodes

(四)安装k8s-node2节点

1)安装node

[root@k8s-node2 ~]# yum install kubernetes-node.x86_64

2)node2连接k8s-master

[root@k8s-node2 ~]# vim /etc/kubernetes/config

配置如下:

22 KUBE_MASTER="--master=http://192.168.100.131:8080"

3)配置kubelet

[root@k8s-node2 ~]# vim /etc/kubernetes/kubelet

5 KUBELET_ADDRESS="--address=192.168.100.133"

11 KUBELET_HOSTNAME="--hostname-override=k8s-node2"

15 KUBELET_API_SERVER="--api-servers=http://192.168.100.131:8080"

4)启动服务

[root@k8s-node2 ~]# systemctl start kubelet

[root@k8s-node2 ~]# systemctl start kube-proxy

[root@k8s-node2 ~]# systemctl enable kubelet

[root@k8s-node2 ~]# systemctl enable kube-proxy

5)在 master 节点检测node节点状态

[root@k8s-master ~]# kubectl get nodes

(五)为所有node节点配置flannel网络

1)在k8s-master节点安装flannel

[root@k8s-master ~]# yum install flannel -y

[root@k8s-master ~]# ls /etc/sysconfig/

bash 复制代码
[root@k8s-master ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.100.131:2379
bash 复制代码
[root@k8s-master ~]# etcdctl set /atomic.io/network/config '{ "Network": "172.16.0.0/16" }' //配置网络
bash 复制代码
[root@k8s-master ~]# systemctl start flanneld
[root@k8s-master ~]# systemctl enable flanneld
bash 复制代码
[root@k8s-master ~]# ifconfig  //查看多一个网络
bash 复制代码
[root@k8s-master ~]# systemctl restart docker  //重新启动docker服务和flannel网络保持一致
[root@k8s-master ~]# systemctl enable docker
[root@k8s-master ~]# ifconfig
Ps备注:自动安装了docker容器,在这版本下,k8s和docker还是融合在一起使用的

2)配置node1节点flannel网络

[root@k8s-node1 ~]# yum install flannel -y

[root@k8s-node01 ~]# ls /etc/sysconfig/

bash 复制代码
[root@k8s-node1 ~]# vim /etc/sysconfig/flanneld
配置如下:
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.100.131:2379
bash 复制代码
[root@k8s-node1 ~]# systemctl start flanneld
[root@k8s-node1 ~]# systemctl enable flanneld
[root@k8s-node1 ~]# systemctl restart docker
[root@k8s-node1 ~]# systemctl enable docker
[root@k8s-node01 ~]# ifconfig

3)安装node2节点flannel网络

[root@k8s-node2 ~]# yum install flannel -y

[root@k8s-node02 ~]# ls /etc/sysconfig/

bash 复制代码
[root@k8s-node2 ~]# vim /etc/sysconfig/flanneld
配置如下:
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.100.131:2379
bash 复制代码
[root@k8s-node2 ~]# systemctl start flanneld
[root@k8s-node2 ~]# systemctl enable flanneld
[root@k8s-node2 ~]# systemctl restart docker
[root@k8s-node2 ~]# systemctl enable docker
[root@k8s-node02 ~]# ifconfig 

4)测试docker容器跨 宿主机 通信

bash 复制代码
[root@k8s-node1 ~]# iptables -P FORWARD ACCEPT  
//允许转发数据
[root@k8s-node2 ~]# iptables -P FORWARD ACCEPT
[root@k8s-master ~]# iptables -P FORWARD ACCEPT
[root@k8s-master ~]# docker pull busybox 
//下载镜像,而后进入docker run -it busybox

[root@k8s-noded01 ~]# docker run -it busybox

[root@k8s-noded02 ~]# docker run -it busybox

/ # ping 172.16.31.2 //测试和其他docker宿主机之间通信

相关推荐
彭于晏Yan9 分钟前
OkHttp 与 RestTemplate 技术选型对比
java·spring boot·后端·okhttp
金銀銅鐵20 分钟前
[Java] 如何理解 class 文件中字段的 descriptor?
java·后端
5008424 分钟前
Graph Engine 是什么,为什么需要它
java·人工智能·性能优化·ocr·wpf
未若君雅裁27 分钟前
服务雪崩、降级、熔断与服务保护
java·微服务
就叫_这个吧44 分钟前
Java实现线程间的通讯--使用synchronized关键字和JUC方式实现
java·开发语言
r-t-H1 小时前
KVM虚拟化与Docker基础实践-第二章
阿里云·docker·容器
学习中.........1 小时前
JVM 垃圾回收核心技术、演进全景与生产调优规范
java·jvm·测试工具
小小编程路1 小时前
C++类作用域
java·jvm·c++
小江的记录本1 小时前
【Java并发编程】锁机制:volatile:JMM内存模型、可见性/禁止指令重排、内存屏障、单例模式中的应用(附《思维导图》+《面试高频考点清单》)
java·后端·python·mysql·单例模式·面试·职场和发展
zandy10111 小时前
2026嵌入式BI PaaS平台技术剖析与实现指南
java·运维·paas