基于centos 7.2部署k8s v1.18.0集群

简介: 基于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

二 环境部署
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
2

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

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

4

5 master上验证
执行命令验证集群状态已经正常
kubectl get nodes
kubectl get nodes -o wide

5

到此,基于centos7.2的K8S v1.18.0集群安装完毕并验证集群运行正常。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
18天前
|
Kubernetes 网络协议 应用服务中间件
K8S二进制部署实践-1.15.5
K8S二进制部署实践-1.15.5
31 0
|
13天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
19天前
|
Kubernetes 流计算 Perl
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
29 7
|
1天前
|
JavaScript Linux 数据安全/隐私保护
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
|
2天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
35 17
|
14天前
|
Kubernetes Ubuntu 应用服务中间件
Ubuntu 22.04 利用kubeadm方式部署Kubernetes(v1.28.2版本)
Ubuntu 22.04 利用kubeadm方式部署Kubernetes(v1.28.2版本)
68 0
|
15天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
11 0
|
15天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
101 0
|
18天前
|
Linux Shell 开发工具
CentOS8中Docker安装及部署
CentOS8中Docker安装及部署
64 0
|
22天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
181 0