基于centos 7.2部署k8s v1.18.0集群
基于centos 7.2部署k8s v1.18.0集群
最近k8s的官方版本已经更新到最新版本,小编在centos7.2的系统上部署最新的v1.18.0
并将安装步骤记录下来,本文对k8s的基础知识不做介绍,如果想了解基本知识请移步k8s官网查阅。
组件版本:
Kubernetes v1.18.0
calico 3.13.1
docker 19.03.8
一 环境准备和部署方式
1 环境准备
Kubernetes系统可运行于多种平台之上,包括虚拟机、裸服务器或PC等,若仅用于快速了解或开发的目的,那么可直接于单个主机之上部署Kubernetes集群,将集群的所有组件均部署运行于单台主机上,本文想学习Kubernetes集群的完整功能,应该构建真正的分布式集群环境,将Master和Node等部署于多台主机之上,本文采用1 master+2 node的形式,
三台主机:
角色 操作系统 内存 cpu 磁盘/GB Ip地址
Master Centos7.2 4 2 40 172.20.128.6
Node1 Centos7.2 4 2 40 172.20.128.7
Node2 Centos7.2 4 2 40 172.20.128.8
第二种:
采用kubeadm工具进行部署,由k8s官方所提供的专门部署集群的管理工具, 每一个节点主机上包括master节点都要手动安装并运行docker,同时也都要手动安装并运行kubelet。如果将第一个节点初始化为master节点,在执行初始化这个步骤,其实就是通过kubeadm工具将API Server、etcd、controller-manager、scheduler各组件运行为Pod,也就是跑在docker上。而其他node节点,因已经运行了kubelet、docker组件,剩下的kube-proxy组件也是要运行在Pod上。
本文采用kubeadm工具进行部署,kubeadm是Kubernetes项目自带的集群构建工具,它负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,简单来讲,kubeadm是Kubernetes集群全生命周期的管理工具,可用于实现集群的部署、升级/降级及拆除,下图为kubeadm的功能示意图。
二 环境部署
1 环境检查
a) 主机名称
三个主机分别命名为master.k8s.com、node1.k8s.com、node2.k8s.com
hostnamectl set-hostname your-new-host-name
b) 查看修改结果
hostnamectl status
c) 设置 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts
d) 检查网络
ip address可显示默认网卡的 IP 地址,Kubernetes 将使用此 IP 地址与集群内的其他节点通信如 172.20.128.6,所有节点上 Kubernetes 所使用的 IP 地址必须可以互通(无需 NAT 映射、无安全组或防火墙隔离)
2 安装docker及kubelet
在 master 节点和 worker 节点都要执行
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
a) 检查和卸载旧版本(如果之前有安装docker)
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
b) 配置yum repository
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
c) 安装并启动docker
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
systemctl enable docker
systemctl start docker
d) 安装 nfs-utils
yum install -y nfs-utils
yum install -y wget
e) 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
f) 关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
g) 关闭swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
h) 卸载旧安装版本
yum remove -y kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl
i) 修改docker Cgroup Driver为systemd
sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service
j) 设置 docker 镜像,提高 docker 镜像下载速度和稳定性
curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s ${REGISTRY_MIRROR}
k) 重启 docker,并启动 kubelet
systemctl daemon-reload
systemctl restart docker
systemctl enable kubelet && systemctl start kubelet
docker version
3 初始化master节点
设置环境变量:
export MASTER_IP=172.20.128.6
export APISERVER_NAME=apiserver.demo
export POD_SUBNET=10.100.0.1/16
echo "172.20.128.6 ${APISERVER_NAME}" >> /etc/hosts
配置kubeadm-config.yaml文件
cat < ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "172.20.128.6:6443"
networking:
serviceSubnet: "10.96.0.0/16"
podSubnet: "10.100.0.1/16"
dnsDomain: "cluster.local"
EOF
kubeadm init
kubeadm init --config=kubeadm-config.yaml --upload-certs
执行完毕后如下截图。
kubeadm join 172.20.128.6:6443 --token 4sad52.9lqsr40fmmi29723 --discovery-token-ca-cert-hash sha256:edddce9484037bc6e2d19f3c7ce53c629cb97c198f761c9de49463be85a21dc5
3 配置 kubectl
rm -rf /root/.kube/
mkdir /root/.kube/
cp -i /etc/kubernetes/admin.conf /root/.kube/config
4 安装 calico 网络插件
wget https://kuboard.cn/install-script/calico/calico-3.13.1.yaml
kubectl apply -f calico-3.13.1.yaml
5 master上验证
执行命令验证集群状态已经正常
kubectl get nodes
kubectl get nodes -o wide
到此,基于centos7.2的K8S v1.18.0集群安装完毕并验证集群运行正常。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
go-fastdfs v1.3.8 发布,增加 https 及 0.0.0.0 白名单支持
go-fastdfs 是一个基于 http 协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。 v1.3.8 增加 https 支持,增加 0.0.0.0 IP 白名单放行所有内网 注意:使用前请认真阅读使用文档或视频教程。 优点 支持curl命令上传 支持浏览器上传 支持HTTP下载 支持多机自动同步 支持断点下载 支持https 支持配置自动生成 支持小文件自动合并(减少inode占用) 支持秒传 支持一键迁移 支持并行体验 支持断点续传(tus) 支持docker部署 支持自监控告警 支持集群文件信息查看 使用通用HTTP协议 无需专用客户端(支持wget,curl等工具) 类fastdfs 高性能 高可靠 无中心设计(所有节点都可以同时读写) 更新历史 v1.3.7 增加上传返回格式 json2,修证生成 google secret 认证 bug v1.3.6 修复并发备份BUG,增加备份队列参数与延迟备份参数 v1.3.5支持断点续传自定义认证,路径自定义认证 v1.3.4 优化并发上传内...
- 下一篇
使用ElasticSearch赋能HBase二级索引 | 实践一年后总结
前言:还记得那是2018年的一个夏天,天气特别热,我一边擦汗一边听领导大刀阔斧的讲述自己未来的改革蓝图。会议开完了,核心思想就是:我们要搞一个数据大池子,要把公司能灌的数据都灌入这个大池子,然后让别人用 各种姿势 来捞这些数据。系统从开始打造到上线差不多花了半年多不到一年的时间,线上稳定运行也有一年多的时间。今天想简单做个总结。 一。背景介绍 公司成立差不多十五六年了,老公司了。也正是因为资格老,业务迭代太多了,各个业务线错综复杂,接口调用也密密麻麻。有时候A向B要数据,有时候B向C要接口,有时候C向A要服务;各个业务线各有各的财产,各自为营,像一个个小诸侯拥兵自重,跑腿费会议费都贵的很。面对这个现状,我们急需进行一波大改造了。 而这个系统(我们暂且叫它天池吧),正是为了整合公司各个业务线的资源,改造这个错综复杂的蜘蛛网为简单的直线班车。省去不必要的接口调用、业务穿插、会议沟通以及不知去哪里拿数据、拿不到数据、拿数据慢的困扰。当然,更节省了产品、开发人员的时间,提升了各业务线整体工作效率。 几个词形容一下天池:稳、快、大、省、清晰。 二。业务梳理 经过对公司各线业务进行梳理,总结出以下...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果