CentOS7搭建Kubernetes环境

简介: CentOS7搭建Kubernetes环境

环境准备

  • 节点数量: 3 台 CentOS7 虚拟机
  • 硬件配置: 最少 2G 内存,最少 2个 CPU,最少 30G 硬盘
  • 网络要求: 多个节点之间网络互通,每个节点能访问外网

集群规划

我这里准备了三台虚拟机,如下:

  • k8s-node1:192.168.95.20
  • k8s-node2:192.168.95.21
  • k8s-node3:192.168.95.22

配置节点主机名

# 第一个节点执行
$ hostnamectl set-hostname k8s-node1
# 第二个节点执行
$ hostnamectl set-hostname k8s-node2
# 第三个节点执行
$ hostnamectl set-hostname k8s-node3

配置 Hosts 文件

在三台机器上同步执行以下命令即可:

cat >> /etc/hosts <<EOF
192.168.95.20 k8s-node1
192.168.95.21 k8s-node2
192.168.95.22 k8s-node3
EOF

关闭防火墙

关闭三台机器的防火墙,并禁用开机自启动,在三台机器上同步执行以下命令即可:

systemctl stop firewalld && systemctl disable firewalld

关闭 swap 分区

在三台机器上同步执行以下命令即可:

swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab

更新系统时间

在三台机器上同步执行以下命令即可:

yum install ntpdate -y
ntpdate time.windows.com

安装容器运行环境 containerd

在三台机器上按照以下步骤同步执行命令即可。

安装 yum-config-manager 相关依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

添加 containerd yum 源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 containerd

yum install  -y containerd.io cri-tools

配置 containerd

cat >  /etc/containerd/config.toml <<EOF
disabled_plugins = ["restart"]
[plugins.linux]
shim_debug = true
[plugins.cri.registry.mirrors."docker.io"]
endpoint = ["https://frz7i079.mirror.aliyuncs.com"]
[plugins.cri]
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"
EOF

启动 containerd 服务并设置开机自启动

systemctl enable containerd && systemctl start containerd && systemctl status containerd

配置 containerd 模块

cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

配置 k8s 网络配置

cat  > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

加载 overlay 和 br_netfilter 模块

modprobe overlay
modprobe br_netfilter

查看当前网络配置是否生效

sysctl -p /etc/sysctl.d/k8s.conf

注意:做完以上配置之后需要重启三台机器!

配置 yum 下载源

查看源

yum repolist

添加源 x86(根据服务器架构自行选择)

cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/

添加源 ARM(根据服务器架构自行选择)

cat << EOF > kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/

安装 Kubernetes

安装最新版本

yum install -y kubelet kubeadm kubectl

指定版本安装

yum install -y kubelet-1.26.0 kubectl-1.26.0 kubeadm-1.26.0

启动 kubelet

systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet

初始化集群

初始化 Master 节点

注意: 初始化 K8s 集群仅仅需要再在 Master 节点进行集群初始化!

kubeadm init \
--apiserver-advertise-address=192.168.95.20 \
--pod-network-cidr=10.224.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/containerd/containerd.sock

我这里已经将命令中的 IP 地址修改成了我的 Master 服务器。以上命令参数解释如下:

参数 意义
–apiserver-advertise-address 用于指定 Kubernetes API Server(kube-apiserver)在集群中对外公布的 IP 地址。它指定了其他节点将用于与 API Server 通信的 IP 地址。
–pod-network-cidr 用于指定 Pod 网络的网段(CIDR)。在 Kubernetes 集群中,每个 Pod 都分配一个独立的 IP 地址,该参数用于定义用于分配这些 IP 地址的网段范围。常用值为:10.244.0.0/16
–image-repository 用于指定 Kubernetes 组件镜像的仓库地址。它定义了从哪个容器镜像仓库获取所需的组件镜像。
–cri-socket 用于指定 Kubernetes 运行时(Container Runtime Interface,CRI)使用的 Unix 域套接字路径或网络套接字地址。

初始化完成后需要在 Master 节点依次执行图中 1 的三条命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

图中 2 的内容是需要接下来在 K8s 集群中其他非 Master 节点执行的命令,表示将自己加入集群。

在主节点中执行 kubectl get nodes 查询出当前集群中只有一个控制面板节点。

初始化 WorkNode 节点

分别在另外两台机器上执行以下命令,将自己加入 K8s 集群。

kubeadm join 192.168.95.20:6443 --token 39v30v.ekgba508fb08f664 \
  --discovery-token-ca-cert-hash sha256:d16ef1480c1288402ffdfa7a500ee44fb9a936b57ec66be526a9186aea1582f0

执行完成后在 Master 节点执行 kubectl get nodes 命令即可查看当前集群中的所有节点。

节点已经加入进来了,但是集群中的这三个节点都是 NotReady 状态,查询所有的 Pod 可以看到 coredns 处于等待状态(Pending),这是由于当前集群缺少前面文章提到的 DNS 插件。

若后面想再次添加新节点,可以使用以下命令,将输出的内容在目标节点执行即可:

$ kubeadm token create --print-join-command --ttl=0

kubeadm join 10.15.0.21:6443 --token xjm7ts.gu3ojvta6se26q8i --discovery-token-ca-cert-hash sha256:14c8ac5c04ff9dda389e7c6c505728ac1293c6aed5978c3ea9c6953d4a79ed34

配置集群网络

配置文件:https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

根据上面地址下载 Calico 配置文件,之后上传至 Master 节点服务器。之后编辑此配置文件,找到下面的这一行,修改为刚才初始化 Master 节点的 --pod-network-cidr

- name: CALICO_IPV4POOL_CIDR
  value: "10.224.0.0/16"

在 Master 节点执行以下命令即可。

kubectl apply -f calico.yaml

再次在 Master 查询当前节点状态和 Pod。

可以看到当前集群中多了三个 Pod,表示网络连接通道,并且处于初始化的状态,之后稍等几分钟,再次查看集群状态即可。

至此,K8s 集群即搭建完毕~

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
2月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
8天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
6 0
|
13天前
|
运维 安全 Linux
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
|
24天前
|
Linux Apache
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
16 0
|
24天前
|
关系型数据库 MySQL Linux
Centos7 yum安装lAMP 环境 php版本5.6.38 mysql版本5.7.22
Centos7 yum安装lAMP 环境 php版本5.6.38 mysql版本5.7.22
19 0
|
24天前
|
Linux PHP
zabbix3.0在centos7环境下always_populate_raw_post_data的设置
zabbix3.0在centos7环境下always_populate_raw_post_data的设置
10 0
|
24天前
|
分布式计算 Hadoop Java
Hadoop【环境搭建 01】【hadoop-3.1.3 单机版】【Linux环境 腾讯云 CentOS Linux release 7.5.1804】【详细】
Hadoop【环境搭建 01】【hadoop-3.1.3 单机版】【Linux环境 腾讯云 CentOS Linux release 7.5.1804】【详细】
49 0
|
1月前
|
Kubernetes Linux 网络安全
CentOS7上kubeadm方式部署Kubernetes(v1.24.3版本)
CentOS7上kubeadm方式部署Kubernetes(v1.24.3版本)
97 0
|
1月前
|
Kubernetes 应用服务中间件 网络安全
CentOS7上二进制部署Kubernetes高可用集群(v1.18版本)
CentOS7上二进制部署Kubernetes高可用集群(v1.18版本)
133 0

热门文章

最新文章