CentOS7搭建Kubernetes环境

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 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 集群即搭建完毕~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
23天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
190 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
1月前
|
Kubernetes 安全 Linux
ansible-install-k8s 之 1 初始化环境
ansible-install-k8s 之 1 初始化环境
|
2月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
411 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
2月前
|
Kubernetes API 虚拟化
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
142 0
|
1月前
|
安全 Linux 数据库连接
CentOS 7环境下DM8数据库的安装与配置
【10月更文挑战第16天】本文介绍了在 CentOS 7 环境下安装与配置达梦数据库(DM8)的详细步骤,包括安装前准备、创建安装用户、上传安装文件、解压并运行安装程序、初始化数据库实例、配置环境变量、启动数据库服务、配置数据库连接和参数、备份与恢复、以及安装后的安全设置、性能优化和定期维护等内容。通过这些步骤,可以顺利完成 DM8 的安装与配置。
227 0
|
2月前
|
Kubernetes Linux Docker
在centos7上搭建k8s环境
在centos7上搭建k8s环境
|
2月前
|
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服务器。
119 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
24天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景