目录
4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败)
[三、安装 k8s](#三、安装 k8s)
[四、k8s集群初始化 (只在master节点上面操作)](#四、k8s集群初始化 (只在master节点上面操作))
[五、k8s 集群 node 节点加入(在node1和node2上操作)](#五、k8s 集群 node 节点加入(在node1和node2上操作))
一、工作准备
机器:3台机器【一台master(集群的控制平面,负责集群的决策/管理),两台node机器(集群的数据平面,负责为容器提供运行环境)】
参数:2核1线程,4G内存,20G硬盘
系统:OpenEuler
IP分配:
主机名 | IP地址 | 节点 |
---|---|---|
k8s-master | 192.168.8.154 | master |
k8s-node-01 | 192.168.8.157 | node1 |
k8s-node-02 | 192.168.8.158 | node2 |
本实验除了备注只需在master操作外,其他的都需要在每个节点上面操作
1.配置主机名
hostnamectl set-hostname k8s-master / k8s-node01 / k8s-node02
2.配置hosts解析
cat >> /etc/hosts <<END
192.168.8.154 k8s-master
192.168.8.157 k8s-node01
192.168.8.158 k8s-node02
END
3.配置免密登录(只需要在master上操作)
ssh-keygen -t rsa
ssh-copy-id k8s-node01、k8s-node02 #复制给node机器
4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败)
yum install chrony -y #同步到同一时钟服务器上
systemctl restart chronyd #重启服务
chronyc sources #验证时间同步
5.关闭系统防火墙
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
6.配置内核转发及网桥过滤
#修改配置文件
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
#加载 br_netfilter 模块
modprobe br_netfilter
#查看是否加载
lsmod | grep br_netfilter
#使新添加的配置文件生效
sysctl -p /etc/sysctl.d/k8s.conf
7.启用IPVS
vim /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
ipvs_modules="ip_vs ip_vs_wlc ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}
do
/usr/sbin/modinfo -F filename ${kernel_module} >/dev/null 2>&1
if [ $? -eq 0 ]
then
/usr/sbin/modprobe ${kernel_module}
fi
done
然后给该文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
8.关闭SWAP分区
临时关闭:swapoff -a
永久关闭:sed -i 's/.*swap.*/#&/' /etc/fstab
二、容器工作时工具安装
1.安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#openEuler 系统在跟换源后需要将/etc/yum.repos.d/kubernetes.repo 中的$release 跟换成 8
yum install docker-ce
#开启docker 服务
systemctl enable --now docker
#然后配置国内镜像加速器
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
]
}
2.安装cri-dockerd
下载cri-dockerd 的rpm包 ==> 上传 ==> yum install ==> 开机自启动
然后修改里面的配置文件:
vim /usr/lib/systemd/system/cri-docker-service
修改第11行:
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
然后重载 ==> 开机自启 ==> 检查组件状态
systemctl daemon-reload && systemctl enable cri-docker.socket && systemctl status cri-docker.socket cri-docker docker
三、安装 k8s
更换kubernets的软件源 vim /etc/yum.repo.d/kubernets.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key
yum clean all && yum makecache
#下载,重启
yum install kubeadm-1.27.2 kubelet-1.27.2 kubectl-1.27.2 -y
systemctl enable kubelet && systemctl start kubelet
四、k8s集群初始化 (只在master节点上面操作)
1.创建初始化文件
[root@k8s-master ~]#kubeadm config print init-defaultsb > kubeadm-init.yaml
2.修改初始化文件
[root@k8s-master ~]# vim kubeadm-init.yaml
12行:advertiseAddress: 192.168.8.154 #master的ip地址
15行:criSocket: unix:///var/run/cri-dockerd.sock
17行:name: k8s-master #master的主机名
30行:imageRepository: registry.aliyuncs.com/google_containers #改成阿里云镜像代理地址
3.初始化
[root@k8s-master ~]# systemctl restart containerd
[root@k8s-master ~]# systemctl restart kubelet
[root@k8s-master ~]# kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6
4.根据系统提示创建具体文件

然后根据初始化给的提示复制上面第一个到 node1 和 node2 节点上
五、k8s 集群 node 节点加入(在node1和node2上操作)
执行 kubeadm join
命令将节点加入集群:

六、添加网络插件(在master上操作)
执行安装Calico:
kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可
在Master节点上获取calico配置文件(可能会失败,如果失败,请下载到本地,然后安装)
kubectl create -f
https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml
1、比如我将下载好的配置文件上传到master节点上:

2、然后再进行安装:kubectl create -f calico.yaml

3、查看pod状态,如果是Running 状态就代表成功了,如果不是就代表有问题

七、查看、验证
[root@k8s-master ~]# kubectl get no -o wide
[root@k8s-master ~]# kubectl get pod -n kube-system
[root@k8s-master ~]# kubectl get cs


