文章目录
前置工作
准备主机
主机名 | 系统 | IP地址 |
---|---|---|
k8s-master | CentOS7 | 10.10.10.221 |
k8s-node | CentOS7 | 10.10.10.222 |
安装Linux系统配置网络、主机名、软件源相关操作
注意以下操作都是在所有主机操作
安装CentOS系统
安装CentOS7系统,镜像下载地址,可以百度搜索相关的大学镜像站,下载相关镜像,通过虚拟软件安装系统
注意:不建议使用克隆的方式进行多个系统的创建
设置静态IP地址
#看清楚自己的网卡名称,打开终端使用ip addr查看,具体的建议百度,谢谢
vi /etc/sysconfig/network-scripts/ifcfg-en32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #这里默认是DHCP,我们将它改写成static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=21bdf38f-58a6-4c22-9480-badb49080af0
DEVICE=ens32
ONBOOT=yes #这里默认是no,我们将它改写成yes
IPADDR=10.10.10.221 #这里是安照自己的网络环境配置,要使系统可以正常通互联网
NETMASK=255.255.255.0
GATEWAY=10.10.10.254
DNS1=114.114.114.114
设置主机名称并配置hosts文件
#终端输入这个命令,编写hosts文件
vi /etc/hosts
将我们的主机名跟相关的IP地址都填写进去
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.10.221 k8s-master
10.10.10.222 k8s-node
vi的操作方法不会的建议百度!!!!
#修改主机名称
hostnamectl set-hostname k8s-master #修改主机名称的命令,这个是在master节点操作
hostnamectl set-hostname k8s-node #修改主机名称的命令,这个是在node节点操作
测试:(测试之前需要重新启动系统)
直接在终端ping百度跟相关的主机名称,通了就可以了。出现一下效果就代表你成功配置好了网络
配置软件源
从阿里云上面下载软件源
进入/etc/yum.repos.d/ 文件夹中
首先备份下 CentOS-Base.repo 文件使用cp、mv、都行
之后下载阿里源文件,同时改名字
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo #没有换行
然后使用命令清除缓存,生成缓存
yum clean all #清除缓存
yum makecache #生成缓存
离线修改
直接将下载好的源文件放入到==/etc/yum.repos.d/==文件夹中
然后执行清除缓存跟生成缓存的命令
更新软件
终端直接输入
yum update
配置软件环境(所有主机)
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭SeLinux
vi /etc/selinux/config #编辑文件,修改成SELINUX=disabled 这个方式是永久关闭
重启验证
getenforce #终端输入这个出现disabled即可
3、关闭swap分区
vi /etc/fstab #编辑文件,在/dev/mapper/centos-swap swap swap defaults 0 0 这一行前面加#,注释掉它
效果图
4、设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #使配置生效
5、设置时间同步
yum install ntpdate -y #安装时间同步工具
ntpdate time.windows.com #设置时间服务器
返回下面这一段即为成功
6、升级系统内核
yum update -y --exclude=kernel* && reboot #先运行这个命令然后在安装内核包
cd /root && yum localinstall -y kernel-ml* #本地安装内核包
#更改内核启动顺序
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
#检查默认内核是不是4.19
grubby --default-kernel
成功效果图
7、安装docker
更新docker的yum源
#先安装wget工具
yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装最新的docker版本
yum install docker-ce -y
配置加速器加速下载
vi /etc/docker/daemon.json #创建配置文件,并编写它
添加下面内容(友情提示:最好复制,这个玩意很容易报错)
{
"registry-mirrors": ["https://registry.docker-cn.com","https://gg3gwnry.mirror.aliyuncs.com"]
}
然后执行
systemctl enable docker #让他开机自启动
然后还有个启动容器时运行:
containerd config default > /etc/containerd/config.toml #修改默认配置文件
vi /etc/containerd/config.toml #编辑文件,将[plugins]>[plugins."io.containerd.grpc.v1.cri"]>sandbox_image 引号内的值修改为 registry.aliyuncs.com/google_containers/pause:3.9
修改后
具体可以参观官网说明
https://v1-28.docs.kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://v1-28.docs.kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#containerd
部署k8s
1.添加k8s的阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
2.安装kubeadm、kubelet 、kubectl
yum install kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 -y
设置开机启动
systemctl enable kubelet
3.查看有没有安装
yum list installed | grep kubelet && yum list installed | grep kubeadm && yum list installed | grep kubectl
出现下面即可:
4.重启所有主机节点
reboot
5.部署master节点
kubeadm init \
--apiserver-advertise-address=10.10.10.221 \ #该地址为master主机地址
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.2 \
--service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 #这个可以保持不变,除非你有特别的需要
说明:
–apiserver-advertise-address:master主机地址,跟其他pod互通的那个;
–image-repository:镜像仓库地址;
–pod-network-cidr:和–service-cidr类似,不能跟主机网络相同或冲突,也不能和–service-cidr一样;
–service-cidr 的选取不能和PodCIDR及本机网络有重叠或者冲突,一般可以选择一个本机网络和PodCIDR都没有用到的私网地址段,比如PODCIDR使用10.244.0.0/16, 那么service cidr可以选择10.96.0.0/12,网络无重叠冲突即可;
成功会输出以下信息:(忘记截图了)
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
#这一串东西要复制好
kubeadm join 10.10.10.221:6443 --token euw3x5.ko9ucg7a2xbnv6yu \
--discovery-token-ca-cert-hash sha256:3a4c934a3e906642d3d0a0be18e62ea2a28c946ee322b14d8e78fde6bd23d10e
5.1报错信息:egistry.aliyuncs.com/google_containers/pause:3.9" as the CRI sandbox image.
如果报错了出现报错:detected that the sandbox image “registry.k8s.io/pause:3.6” of the container runtime is inconsistent with that used by kubeadm. It is recommended that using “registry.aliyuncs.com/google_containers/pause:3.9” as the CRI sandbox image.
这个错误信息,就检查下安装docker中的第7项那个选项配置好没有
6.为用户赋予权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
这个时候可以查看nodes
kubectl get nodes
一开始是NOTReady,这个是正常状态。
7.node节点加入控制节点
#根据kubeadm init实际输出结果来执行,以下只是示例
kubeadm join 10.10.10.221:6443 --token euw3x5.ko9ucg7a2xbnv6yu \
--discovery-token-ca-cert-hash sha256:3a4c934a3e906642d3d0a0be18e62ea2a28c946ee322b14d8e78fde6bd23d10e
然后在master节点上继续查看
kubectl get nodes
8.部署网络插件
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
#若是你自定义了pod-network-cidr,那么需要修改kube-flannel.yml中相应的内容,详情请参考:
https://github.com/flannel-io/flannel#deploying-flannel-manually
#【10.244.0.0/16】是默认的pod所在的cidr,由于自定义了pod的cidr,所以这里要修改下
vi kube-flannel.yml
注意事项:有时候这个配置文件是下载不聊image的,同时配置网络中的IP地址范围还是要改的,改成默认的就行。然后我门就需要将它的image镜像下载的链接地址修改下
这里推荐一个网站,是docker的镜像站,一般使用官网的镜像是下载不下来的
https://docker.aityp.com/
直接搜索镜像名,复制相关的链接,修改到yaml文件中,记住文件中的docker.io,所有的都要修改,之后保存,应用即可
9.测试
安装好了之后等一时,使用kubectl get nodes 命令查看node的状态信息,如果都是ready状态,那我们执行下一步
kubectl create deployment nginx-deployment --image=hub.atomgit.com/library/nginx:1.24-bullseye-perl
#image后面可以自定义镜像源
#这里在推荐一个镜像网站:https://hub.atomgit.com/repos
kubectl get pod -o wide #查看pod容器
爬取下文件
至此测试环境的K8s的环境安装完成。第一次自己摸索部署,从网上查资料,不足之处多多担待哈!
环境部署使用到的文件分享链接
https://www.ilanzou.com/s/9ZAyKOOQ?code=ling k8s测试环境文件
转载注明出处,谢谢