centos7通过kubeadm安装k8s 1.27.1版本

简介: centos7通过kubeadm安装k8s 1.27.1版本

准备机器

服务器配置
关闭防火墙(所有节点)
关闭防火墙并设置开机不启动
sudo systemctl stop firewalld
sudo systemctl disable firewalld
关闭swap分区(所有节点)
修改后重启服务器生效
sudo swapoff -a
sudo vim /etc/fstab #永久禁用swap,删除或注释掉/etc/fstab里的swap设备的挂载命令即可

/dev/mapper/centos-swap swap swap defaults 0 0

Centos7内核升级(所有节点)
CentOS 7.x 系统自带的3.10.x内核存在一些Bugs,导致运行的docker、Kubernetes不稳定,还有会造成kube-proxy不能转发流量

查看现在的内核版本

[ops@master ~]$ uname -a
Linux master 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Centos7系统安装ElRepo

[ops@master ~]$ curl -L -O http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm

[ops@master ~]$ sudo rpm -ivh kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm
[sudo] password for ops:
Preparing... ################################# [100%]
package kernel-lt-5.4.278-1.el7.elrepo.x86_64 is already installed
[ops@master ~]$ sudo sed -ri.bak 's/(GRUB_DEFAULT).*/\1=0/g' /etc/default/grub
[ops@master ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

重启

[ops@master ~]$ reboot

检查内核版本

[ops@master ~]$ uname -a
Linux node2 5.4.278-1.el7.elrepo.x86_64 #1 SMP Sun Jun 16 15:37:11 EDT 2024 x86_64 x86_64 x86_64 GNU/Linux
配置主机名(所有节点)
sudo vim /etc/hosts
master 172.139.20.196
node1 172.139.20.223
node2 172.139.20.197
时间同步(所有节点)
[ops@master ~]$ sudo yum install ntpdate -y && ntpdate time.windows.com
配置iptables规则
[root@master ~]# sudo iptables -F && iptables -X && iptables -F -t nat && iptables -P FORWARD ACCEPT

{spa.salonkaeru.com]
{spa.0432zhu.com]
{spa.showa-hd.com]
{spa.jwhuanbao.com]
{spa.voodit.com]

设置系统参数

[root@master ~]# cat < /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

网桥生效

[root@master ~]# sysctl --system

安装docker(所有节点)
参考https://www.cnblogs.com/xiaodunan/p/17401936.html

安装cri-dockerd(所有节点)

下载安装包

https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm

修改/usr/lib/systemd/cri-docker.service文件中的ExecStart配置

vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7

[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl enable --now cri-docker
yum安装kubeadm、kubelet、kubectl(所有节点)

将SELinux设置为permissive模式

[ops@master ~]$ sudo setenforce 0
[ops@master ~]$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

配置k8s yum源

[ops@master ~]$ sudo vim /etc/yum.repos.d/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

查看kubeadm有什么版本

[ops@master ~]$ sudo yum list --showduplicates | grep kubeadm

不指定版本默认为最新版本,这里安装k8s1.27.1

[ops@master ~]$ sudo yum install -y kubelet-1.27.1 kubeadm-1.27.1 kubectl-1.27.1

配置开机自启

[ops@master ~]$ sudo systemctl enable --now kubelet

指定容器运行时为containerd

[ops@master ~]$ sudo crictl config runtime-endpoint /run/cantainerd/containerd.sock

查看版本

[ops@master ~]$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.1", GitCommit:"4c9411232e10168d7b050c49a1b59f6df9d7ea4b", GitTreeState:"clean", BuildDate:"2023-04-14T13:20:04Z", GoVersion:"go1.20.3", Compiler:"gc", Platform:"linux/amd64"}

指定镜像仓库地址,k8s将提前从该地址拉取k8s所需的镜像

[ops@master ~]$ sudo kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock

初始化master节点的控制面板(master节点)

可以查看命令的具体参数用法

kubeadm init --help

在master节点执行初始化(node节点不用执行)

apiserver-adertise-address 指定apiserver的IP,即master节点的IP

image-repository 设置镜像仓库为国内镜像仓库

kubernetes-version 设置k8s的版本,跟kubeadm版本一致

service-cidr 这是设置node节点的网络的,暂时这样设置

pod-network-cidr 这是设置Node节点的网络的,暂时这样设置

cri-socket 设置cri使用cri-dockerd

[ops@master ~]$ sudo kubeadm init \

--apiserver-advertise-address=172.139.20.196 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.27.1 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=all

修改环境变量

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

可以查看kubelet日志

{spa.daigakudatabase.com]
{spa.suqiran.com]
{spa.xymz-china.com]
{spa.hjydszl.com]
{spa.youhui02.com]
{spa.720aa.com]
sudo journalctl -xefu kubelet

在要加入的node节点上执行,master节点不用执行

[ops@node1 ~]$ sudo kubeadm join 172.139.20.196:6443 --token zgaa8t.249o2kieoot38ukl --discovery-token-ca-cert-hash sha256:bd097dfa606cce57507abce6d8740e48660892527686033637101d8a65c1ea09 --cri-socket unix:///var/run/cri-dockerd.sock

如果上面的令牌忘记了,或者新的node节点加入,在master上执行下面的命令,生成新的令牌

[ops@master ~]$ sudo kubeadm token create --print-join-command

查看所有命名空间的pod

[ops@master ~]$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7bdc4cb885-kqh2h 0/1 Pending 0 23m
kube-system coredns-7bdc4cb885-qf599 0/1 Pending 0 23m
kube-system etcd-master 1/1 Running 0 23m
kube-system kube-apiserver-master 1/1 Running 0 23m
kube-system kube-controller-manager-master 1/1 Running 0 23m
kube-system kube-proxy-djstm 1/1 Running 0 9m59s
kube-system kube-proxy-l69kj 1/1 Running 0 9m58s
kube-system kube-proxy-rmzr2 1/1 Running 0 23m
kube-system kube-scheduler-master 1/1 Running 0 23m

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
58 0
|
2月前
|
Kubernetes Linux 开发者
在CentOS 7.8上使用kubeadm安装k8s 1.26
至此,你已经在CentOS 7.8上使用kubeadm成功安装了k8s 1.26。你可以通过输入 `kubectl get nodes`来查看节点状态,如果显示为Ready,那么恭喜你,你的Kubernetes集群已经准备好了。
151 23
|
3月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
861 26
|
3月前
|
Kubernetes Linux 网络安全
CentOS 7.8下使用kubeadm安装Kubernetes 1.26
这就是所有的前线报告,冒险家们,你们已经做好准备,开始在CentOS 7.8上通过Kubeadm安装Kubernetes 1.26的挑战了吗?走上这段旅程,让你的代码飞翔吧。
126 16
|
Linux
升级CentOS到最新版本
升级CentOS到最新版本
458 0
|
Linux
[Ansible] 升级 CentOS 到指定版本
今天接到一个需求,需要把一些 7.4 版本的 CentOS 升到 7.5 而不是 7.6。查了一下手动升级的方案,然后写成 ansible playbook。做个记录。 - hosts: all become: yes serial: - 1 - 33% vars: upgrade_to: "7.
2207 0
|
3月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
117 10
|
3月前
|
Linux 网络安全 数据安全/隐私保护
在CentOS 7.9中安装sshpass教程
如果在控制台显示出sshpass的使用方法,那就说明我们的大餐已经准备好,sshpass已经成功安装。 以上就是在 CentOS 7.9 中安装 sshpass 的彩色步骤,专业而生动,就像大厨在厨房一样顺利。
146 8
|
4月前
|
存储 Linux 网络安全
如何从CentOS7升级到8?CentOS8最新安装教程
从CentOS 7升级到8只需三步:清理系统、更换软件包及存储库、安装新内核与发布版本。首先确保系统最新并清理冗余包,接着替换基础系统包为CentOS 8版本,最后通过DNF工具完成内核更新与系统同步。整个过程需在终端执行,建议升级前备份VPS快照以防数据丢失。此方法可避免重装系统导致的数据清除问题,实现平滑升级。
472 6
|
4月前
|
Linux 虚拟化 Windows
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
### 安装VMtools的作用及步骤 安装VMtools可以实现Windows与CentOS之间的字符串和命令粘贴、文件夹共享等操作。在CentOS中,通过VMware菜单栏选择“VMware Tools”,将下载的压缩包拷贝到`/opt`目录并解压。接着进入终端,使用`./vmware-install.pl`命令完成安装。安装后重启系统,即可实现Windows与CentOS之间的字符和文件共享。具体步骤包括解压文件、启动命令行终端、安装VMtools以及配置文件共享。
155 16
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?