OpenEuler系统下——k8s离线安装部署

3 篇文章 0 订阅
1 篇文章 0 订阅

简介

K8S是目前已经是业界最为流行的开源技术框架,但是苦于其学习难度较大,并且初学者在开始的时候需要自己进行安装搭建部署,以供后续的学习使用,但是国内经常会出现无法访问外网的官方网站,导致很多镜像和依赖包无法自动安装部署。

本博客主要讲解了如何在离线环境下安装搭建k8s集群,以及最终的验证效果。
部署架构如下:
在这里插入图片描述
具体操作步骤如下:

安装过程

操作系统相关配置(所有服务器执行)

操作系统层面,需要先确保时区为东八区、hostname名称每台服务器均不一致、并且关闭swap
关闭swap

	swapoff -a
	vim /etc/fstab

在这里插入图片描述
在这里插入图片描述

设置时区

timedatectl set-timezone Asia/Shanghai

在这里插入图片描述
设置hostname
每台服务器设置hostname,并且配置/etc/hosts

hostnamectl set-hostname <对应主机hostname名称>

在这里插入图片描述
在这里插入图片描述
配置hosts

		vim /etc/hosts

在这里插入图片描述
在这里插入图片描述
关闭服务器防火墙

systemctl stop firewalld
systemctl disable firewalld

在这里插入图片描述

安装conntrack应用

yum install -y conntrack

在这里插入图片描述
工作节点安装socat

yum install -y socat

在这里插入图片描述

安装基础依赖环境(所有服务器执行)

基础依赖环境已经打包完成,可以点击k8s离线安装包下载安装。或者点击百度网盘下载,提取码:2unp。

文件下载后得到k8s.packages.tgz压缩包,解压后可以得到如下三个文件夹,对应3个不同模块
在这里插入图片描述
将3个目录全部上传到所有服务器的/opt路径下

安装docker
1、 安装docker 环境

cd docker_installer
tar -zxvf docker-26.1.4.tgz
cp docker/* /usr/bin/

在这里插入图片描述
2、安装docker-compose(非必要)

chmod +x docker-compose
cp docker-compose /usr/bin/

在这里插入图片描述
3、docker.service文件

cp docker-config/docker.service /usr/lib/systemd/system

在这里插入图片描述

若没有自己的代理服务器,需要注释掉配置文件中的代理服务器ip。

4、daemon.json文件

mkdir /etc/docker
cp docker-config/daemon.json /etc/docker/

在这里插入图片描述

5、设置docker开机自启动

systemctl start docker
systemctl enable docker

在这里插入图片描述

6、 安装cri-docker容器运行时引擎
创建docker用户组

groupadd docker

在这里插入图片描述

解压二进制文件到: /usr/local/bin

cd /opt/cri-docker_installer
tar -zxvf cri-dockerd-0.3.14.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/local/bin/
cp cri-docker.service /etc/systemd/system/
cp cri-docker.socket /etc/systemd/system/
systemctl start cri-docker
systemctl enable cri-docker

在这里插入图片描述
配置开机自启动
在这里插入图片描述
自此,k8s的依赖环境已经安装完成,可以开始k8s应用主题的安装。

k8s主体应用安装(所有服务器执行)

导入docker镜像

由于k8s镜像国内无法正常访问,安装包中已经打包了k8s主体需要的所有镜像文件,直接加载导入即可

cd /opt/k8s_installer

docker load -i k8s.images.tgz

在这里插入图片描述

k8s组件离线安装

安装cni
mkdir -p /opt/cni/bin
tar -zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin

在这里插入图片描述
保险起见,重启一下cri-docker

systemctl restart cri-docker

在这里插入图片描述

安装crictl
tar -zxvf crictl-v1.30.0-linux-amd64.tar.gz
cp crictl /usr/local/bin

在这里插入图片描述

安装kubeadm、kubelet、kubectl

复制二进制文件到: /usr/local/bin

cp kubeadm /usr/local/bin/
cp kubectl /usr/local/bin/
cp kubelet /usr/local/bin/

在这里插入图片描述

一定要将文件复制到目录而不是移动(mv)到目录,否则会一直启动失败,未查明是什么原因。

上传/usr/lib/systemd/system/kubelet.service文件

cp kubelet.service /usr/lib/systemd/system/

在这里插入图片描述

上传/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf文件

cp -r kubelet.service.d/ /usr/lib/systemd/system/

在这里插入图片描述

上传/etc/sysconfig/kubelet文件

cp sysconfig/kubelet /etc/sysconfig/

在这里插入图片描述

启动kubelet
systemctl enable --now kubelet
systemctl status kubelet

在这里插入图片描述

系统会尝试启动kubelet并且配置开机自启动, 默认会不断重启,直到创建集群为止

为了方便后续的操作,建议配置一下k8s的自动补全功能,操作如下:

yum -y install bash-completion
kubectl completion bash
source /usr/share/bash-completion/bash_completion
echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc

在这里插入图片描述

自此,k8s的基础环境已经安装完成,后续需要在master节点上创建k8s集群,并且在worker节点上将工作节点加入该集群

创建K8S集群(其中一台master机器上执行)

主节点创建集群:

kubeadm init \
	--control-plane-endpoint="k8s-master-01" \
	--kubernetes-version v1.30.2 \
	--cri-socket unix:///run/cri-dockerd.sock

在这里插入图片描述

这里需要指定版本为v1.30.2,因为安装包中封装的k8s镜像是v1.30.2版本,若要安装其他版本,需要另行下载其他版本对应的docker镜像包。执行到这个地方的时候,可能会卡主一段时间(大约5分钟左右,根据电脑性能等待时间长度有所不同)
在这里插入图片描述

安装网络插件
集群创建成功后,需要安装集群的网络插件,这里选择使用calico,相关镜像之前已经封装在安装包中,可以直接启动即可。
在这里插入图片描述

cd /opt/k8s_installer/
kubectl apply -f calico.yaml
kubectl get pods -n kube-system

在这里插入图片描述

主节点创建证书:

	kubeadm init phase upload-certs --upload-certs

在这里插入图片描述

保存好上面的证书字符串,后面会用到

配置集群访问:

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

第二个主节点加入原有集群:
通过回显内容可以看到具体的加入具体口令,将其复制,并且做适当修改(使其支持docker容器运行时)
在这里插入图片描述
修改后内容如下:

  kubeadm join k8s-master-01:6443 --token 886zto.jlvko62yfrlrymwu \
        --discovery-token-ca-cert-hash sha256:053749d9ab0725d9bad5e09ee67637cb8593f63cd65f8d59ee57e96de7afed05 \
        --control-plane \
        --certificate-key b2cf805959c144f5123202f349bf51712ca5723badbb473a1f98040787400587 \
        --cri-socket unix:///run/cri-dockerd.sock 

将以上命令张贴到第二个主节点服务器上执行即可
在这里插入图片描述
在这里插入图片描述

看到以上内容表明另外一个主节点已经加入集群,可以通过kubelet查看所有节点

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

在这里插入图片描述
同样,配置一下自动补齐,以便后期使用

	kubectl completion bash
	source /usr/share/bash-completion/bash_completion
	echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc
	echo 'source <(kubectl completion bash)' >>~/.bashrc

在这里插入图片描述
工作节点加入集群:
从第一个master节点创建好集群后,可以得到加入集群的口令,如下:
在这里插入图片描述
同样,做出适当修改,添加证书语句和docker兼容语句,得到如下:

kubeadm join k8s-master-01:6443 --token 886zto.jlvko62yfrlrymwu \
        --discovery-token-ca-cert-hash sha256:053749d9ab0725d9bad5e09ee67637cb8593f63cd65f8d59ee57e96de7afed05 \
        --certificate-key b2cf805959c144f5123202f349bf51712ca5723badbb473a1f98040787400587 \
        --cri-socket unix:///run/cri-dockerd.sock 

将其复制到其他所有worker服务器上执行即可
执行结束后,从任意master节点上即可看到所有节点以及对应节点状态
在这里插入图片描述
至此,k8s集群安装完成。

验证集群可用性

上传测试服务启动文件和测试服务镜像(镜像需要上传到所有服务器上,除非docker配置了镜像仓库并且镜像已经加载到docker仓库中)
在这里插入图片描述
测试应用启动文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # 告知 Deployment 运行 2 个与该模板匹配的 Pod
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

服务器上自行上传并下载nginx:1.14.2镜像即可。

创建应用,并查看状态
在这里插入图片描述
通过port-forward映射出来效果如下

kubectl port-forward deployments/nginx-deployment --address 0.0.0.0 8888:80

在这里插入图片描述
至此,k8s集群搭建并验证完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值