Kubernetes之集群环境搭建
操作环境:Centos7.9.2009、CPU(2G)、内存(2G)、硬盘(30G)
一主两从:
master:192.168.159.140(Centos7.9.2009、CPU(2G)、内存(2G)、硬盘(30G))
node1:192.168.159.141(Centos7.9.2009、CPU(2G)、内存(2G)、硬盘(30G))
node2:192.168.159.142(Centos7.9.2009、CPU(2G)、内存(2G)、硬盘(30G))
环境初始化:
1)、设置主机名
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
2)、主机名解析
[root@master ~]# vim + /etc/hosts192.168.159.140 master
192.168.159.141 node1
192.168.159.142 node2
3)、时间同步(三台均执行同样操作)
# 启动chronyd服务
[root@master ~]# systemctl start chronyd # 设置chronyd服务开机自启
[root@master ~]# systemctl enable chronyd # chronyd服务启动稍等几秒钟,就可以使用date命令验证时间了
[root@master ~]# date
Fri Feb 19 18:17:26 CST 2021
4)、禁用iptables和firewalld(三台均执行同样操作)
kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系 统的规则
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
[root@master ~]# systemctl stop iptables
5)、禁用selinux(三台均执行同样操作)
selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的问题
# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
[root@master ~]# vim /etc/selinux/config # 注意修改完毕之后需要重启linux服务
SELINUX=disabled
6)、禁用swap分区(三台均执行同样操作)
swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明
# 编辑分区配置文件/etc/fstab,注释掉swap分区一行 # 注意修改完毕之后需要重启linux服务[root@master ~]# vim /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0
UUID=23d312dc-c9e3-440e-b014-4e34807588c3 /boot xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
7)、修改linux的内核参数(三台均执行同样操作)
# 修改linux的内核参数,添加网桥过滤和地址转发功能 # 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:[root@master ~]# vim /etc/sysctl.d/kubernetes.confnet.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1# 重新加载配置
[root@master ~]# systemctl -p /etc/sysctl.d/kubernetes.conf# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter # 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter
br_netfilter 22256 0
bridge 151336 1 br_netfilter
8)配置ipvs功能(三台均执行同样操作)
在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块
# 1 安装ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadm -y # 2 添加需要加载的模块写入脚本文件
[root@master ~]# cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF # 3 为脚本文件添加执行权限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules # 4 执行脚本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules # 5 查看对应的模块是否加载成功
[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4 15053 0
nf_defrag_ipv4 12729 1 nf_conntrack_ipv4
ip_vs_sh 12688 0
ip_vs_wrr 12697 0
ip_vs_rr 12600 0
ip_vs 145458 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 139264 2 ip_vs,nf_conntrack_ipv4
libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
9)、 重启服务器
[root@master ~]# reboot
安装docker(三台均安装)
# 1 切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo # 2 查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates # 3 安装特定版本的docker-ce
# 必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-19.03.15-3.el7 -y # 4 添加一个配置文件
# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替 cgroupfs [root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF > /etc/docker/daemon.json
{ "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://1zipy8kx.mirror.aliyuncs.com"]
}
EOF # 5 启动docker
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker # 6 检查docker状态和版本
[root@master ~]# docker version
Version: 19.03.15
安装kubernetes组件(三台均安装)
# 由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
# 编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置
[root@master ~]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg # 安装kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.22.0-0 kubelet-1.22.0-0 kubectl-1.22.0-0 -y # 配置kubelet的cgroup
# 编辑/etc/sysconfig/kubelet,添加下面的配置
[root@master ~]# vim /etc/sysconfig/kubelet
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs" # 4 设置kubelet开机自启
[root@master ~]# systemctl enable kubelet
准备集群镜像(三台均安装)
# 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看
[root@master ~]# kubeadm config images list k8s.gcr.io/kube-apiserver:v1.22.7
k8s.gcr.io/kube-controller-manager:v1.22.7
k8s.gcr.io/kube-scheduler:v1.22.7
k8s.gcr.io/kube-proxy:v1.22.7
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:1.8.4# 下载镜像
# 此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案
[root@master ~]# images=(
kube-apiserver:v1.22.7
kube-controller-manager:v1.22.7
kube-scheduler:v1.22.7
kube-proxy:v1.22.7
pause:3.5
etcd:3.5.5-0
coredns:v1.8.4
)[root@master ~]# for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
集群初始化
下面开始对集群进行初始化,并将node节点加入到集群中下面的操作只需要在 master 节点上执行即可下面的操作只需要在 node 节点上执行即可
# 将node节点加入集群
[root@node1 ~]# kubeadm join 192.168.159.140:6443 \
--token we4ayz.64m8jim2q6a6stqg \
--discovery-token-ca-cert-hash sha256:4d324134109b6abb0fe59c81af4ff9c8e45a56e460adeeba9d8f5551f37f7306[root@node2 ~]# kubeadm join 192.168.159.140:6443 \
--token we4ayz.64m8jim2q6a6stqg \
--discovery-token-ca-cert-hash sha256:4d324134109b6abb0fe59c81af4ff9c8e45a56e460adeeba9d8f5551f37f7306# 查看集群状态 此时的集群状态为NotReady,这是因为还没有配置网络插件
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady control-plane,master 14m v1.22.0
node1 NotReady <none> 2m59s v1.22.0
node2 NotReady <none> 5s v1.22.0
安装网络插件
kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择 flannel下面操作依旧只在 master 节点执行即可,插件使用的是DaemonSet的控制器,它会在每个节点 上都运行
# 获取fannel的配置文件
[root@master~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube- flannel.yml 由于网络原因,手动加载事先下载后的flannel镜像
# docker load -i flanneld-v0.12.0-amd64.docker # 使用配置文件启动fannel
[root@master ~]# kubectl apply -f kube-flannel.yml#查看节点状态
[root@master ~]# kubectl get nodesNAME STATUS ROLES AGE VERSION
master Ready control-plane,master 7h12m v1.22.0
node1 Ready <none> 7h1m v1.22.0
node2 Ready <none> 6h58m v1.22.0
查看集群状态
此时scheduler Unhealthy
[root@master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251:connect: connection refused
controller-manager Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
解决:
[root@master ~]# cd /etc/kubernetes/manifests/
修改:kube-scheduler.yaml 注释port=0 #- --port=0 #重启kubelet服务
[root@master ~]# systemctl restart kubelet[root@master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
此环境搭建完成
Kubernetes之集群环境搭建相关推荐
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...
- kubernetes集群环境搭建(kubeadm方式)
1. kubernetes简介 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2 ...
- Kubernetes集群环境搭建详细教程(一主两从)
Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...
- Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建
Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建 1. 前言 2. 安装三个Ubuntu 2.1 三个机器都关闭防火墙 2.2 三个机器都关闭swap 2.3 三个机器都 ...
- Kubernetes1.24版本高可用集群环境搭建(二进制方式)
背景: 虽然kubeadm方式安装集群更加简单些,配置相对比较少,但是生产环境还是建议二进制的方式安装,因为二进制的方式kubernetes的kube-apiserver.kube-controlle ...
- 2W 字详解 Redis 6.0 集群环境搭建实践
原文链接:https://www.cnblogs.com/hueyxu/p/13884800.html 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- hadoop集群环境搭建准备工作
一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装
一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...
- 『高级篇』docker之DockerSwarm的集群环境搭建(28)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...
最新文章
- Android Broadcast Security
- Build: 0 succeeded or up-to-date, 0 failed, 1 skipped
- 光端机和收发器的区别有哪些?
- 助你解决新手开车四大问题 为您支招
- ApacheCN 未来发展方向(暂定)2019.8.2
- 记录——《C Primer Plus (第五版)》第九章编程练习第六题
- 2016年6月份那些最实用的 jQuery 插件专辑
- MySQL的InnoDB存储引擎
- 各历史版本NDK下载地址
- 桌面好看的linux系统,可以当桌面的LINUX漂亮壁纸
- 大数据分析项目生命周期
- 算法学习笔记——数据结构:树状数组BIT
- Nordic nRF52840实战学习--ble_app_blinky例程
- 经验分享 针式打印机经典案例分析
- ps钢笔路径打不出字怎么解决?
- 【日常】我的电影、小说、番剧、歌曲“观看记录清单”
- 多个excel工作簿、工作表合并
- UML建模基础知识点
- 【蓝桥杯省赛真题32】Scratch帆船运动 少儿编程scratch蓝桥杯省赛真题讲解
- Nginx基本使用方法