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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
252 2
|
7天前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
190 16
|
1月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
151 10
|
1月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
193 0
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
1628 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
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服务器。
338 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
Kubernetes Linux 网络安全
CentOS7环境下快速部署Kubernetes(k8s)集群
CentOS7环境下快速部署Kubernetes(k8s)集群
1736 0
CentOS7环境下快速部署Kubernetes(k8s)集群
|
Kubernetes Linux Shell
基于centos 7.2部署k8s v1.18.0集群
基于centos 7.2部署k8s v1.18.0集群
4061 0
基于centos 7.2部署k8s v1.18.0集群
|
1月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
470 69