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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 基于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集群安装完毕并验证集群运行正常。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
18天前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
119 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
18天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
36 7
|
18天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
25 5
|
18天前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
36 2
|
18天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
53 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
Kubernetes Linux 网络安全
CentOS7环境下快速部署Kubernetes(k8s)集群
CentOS7环境下快速部署Kubernetes(k8s)集群
1163 0
CentOS7环境下快速部署Kubernetes(k8s)集群
|
23天前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
30天前
|
安全 关系型数据库 MySQL
Linux(CentOS6)安装MySQL5.6
Linux(CentOS 6)系统上安装MySQL 5.6版本的详细步骤,包括准备数据存放目录、创建用户、下载安装包、初始化数据库、配置服务脚本、设置环境变量等操作。
107 1
|
22天前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
110 8
centos7 mysql安装及配置