1. 环境准备
虚拟机/服务器:
硬件配置:2核CPU、4G内存、20G硬盘。
Ubantu版本:ubuntu-20.04.6-desktop-amd64
来源:http://mirrors.aliyun.com/ubuntu-releases/20.04/
Ubantu版本:ubuntu-18.04.6-desktop-amd64
来源:http://mirrors.aliyun.com/ubuntu-releases/18.04/
查询三个虚拟机的IP
2. 初始化系统
以下操作在三台机器上都需要执行
2.1 更改主机名
sudo hostnamectl set-hostname k8s-master
sudo hostnamectl set-hostname k8s-node1
sudo hostnamectl set-hostname k8s-node2
2.2配置网卡ip
联网方式参考
https://blog.csdn.net/m0_46586460/article/details/141463889?spm=1001.2014.3001.5501
使用ifconfig查询各台虚拟机的IP
我的如下:
192.168.174.129 k8s-master
192.168.174.134 k8s-node1
192.168.174.133 k8s-node2
2.3 修改hosts文件
大型环境可以使用 DNS 的方式来使主机名和 ip 互相解析
sudo vim /etc/hosts
或者nano方式编辑,对hosts进行补充
sudo nano /etc/hosts
192.168.174.129 k8s-master
192.168.174.134 k8s-node1
192.168.174.133 k8s-node2
2.4 关闭防火墙
sudo systemctl stop ufw.service
sudo systemctl disable ufw.service #开机禁用
sudo systemctl status ufw.service
ufw disable
测试网络是否正常
相互ping
192.168.174.129 k8s-master
192.168.174.134 k8s-node1
192.168.174.133 k8s-node2
2.6 禁用 swap
systemctl stop swap.target
systemctl status swap.target
systemctl disable swap.target #开机禁用
systemctl stop swap.img.swap
systemctl status swap.img.swap
关闭虚拟交换分区
sudo nano /etc/fstab
将 包含swap 的一行注释掉
2.7 修改内核参数
安装 ipvsadm
apt install -y ipvsadm
sudo tee /etc/sysctl.d/k8s.conf << 'EOF'
net.ipv4.ip_forward = 1
EOF
sudo sysctl -p /etc/sysctl.d/k8s.conf
这两条命令共同完成了在 Linux 系统上启用 IP 转发的任务,这对于 Kubernetes 集群中的节点来说是必要的。第一条命令创建了一个配置文件,将 net.ipv4.ip_forward 设置为 1(启用状态),第二条命令则应用了这个设置
2.8 时间同步
先查看时区是否正常,不正确则替换为上海时区
date
timedatectl set-timezone Asia/Shanghai #设置时区
apt -y install ntp #安装ntp服务
systemctl start ntp
systemctl enable ntp
2.9 安装 docker
apt install -y docker.io
systemctl status docker
systemctl enable docker:开机自启
#配置镜像下载加速
sudo mkdir -p /etc/docker
nano /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://p5lmkba8.mirror.aliyuncs.com","https://registry.docker-cn.com"]
}
sudo systemctl daemon-reload:重新加载配置文件
sudo systemctl restart docker:重启docker
docker info | grep -i “Cgroup Driver”:查看驱动是否更换
docker ps:测试docker命令是否可以正常使用
2.10 使用阿里云 kubernetes 镜像
Kubernetes 镜像配置
#下载安装源的gpg秘钥
apt install curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update
sudo apt install -y kubeadm=1.20.8-00 kubelet=1.20.8-00 kubectl=1.20.8-00
查看版本
apt-mark hold kubeadm kubelet kubectl:为设置相应资源不自动更新,此处不执行
systemctl enable kubelet.service:开机自启
kubeadm version
kubelet --version
kubectl version --client
3.初始化Master节点
只在Master节点操作
sudo kubeadm init \
--kubernetes-version v1.23.6 \
--apiserver-advertise-address=192.168.10.97 \
--image-repository registry.aliyuncs.com/google_containers
将 kubeadm join 这一段命令记下来,后面加入节点时会用到。
kubeadm join 192.168.174.129:6443 --token 5f4gh7.wunr7hwt4dookojj --discovery-token-ca-cert-hash sha256:14441b1d641f55e42b8ac10b361edb360b66a9846a637f7c51250f52b7b7eaf8
按提示操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get pods -A -o wide
4.加入节点
以下操作在 node1 和 node2 执行。
kubeadm join 192.168.174.129:6443 --token r3a55n.uejg90ywc13ffoke --discovery-token-ca-cert-hash sha256:14441b1d641f55e42b8ac10b361edb360b66a9846a637f7c51250f52b7b7eaf8
查看是否加入成功
可以看到 node1 和 node2 已经加入到集群中
执行下面的命令
echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> /etc/profile
source /etc/profile
5.部署Cilium
参考(参考方式一即可):
https://blog.csdn.net/m0_46586460/article/details/141469659?spm=1001.2014.3001.5502
部署成功后,节点全部Ready
6.构建自定义镜像
https://blog.csdn.net/m0_46586460/article/details/141470460?spm=1001.2014.3001.5502
7.在Node1 Node2部署自定义镜像的Pod
根目下 建立文件夹 mkdir Deployment_yaml
进入 文件夹后,建立yaml文件
nano multi-func-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: multi-func-deployment
labels:
app: multi-func
spec:
replicas: 3 # 部署3个Pod副本
selector:
matchLabels:
app: multi-func
template:
metadata:
labels:
app: multi-func
spec:
containers:
- name: multi-func
image: 192.168.174.131:5000/multi_func:v1.0 #根据你的镜像地址填写
ports:
- containerPort: 80 # 根据你的应用需求修改
如果跟着步骤6,不是请忽略:
进入第一个pod后,curl另一个pod的http端口()
部分流程转载博客(修改流程和相关参数)
https://blog.csdn.net/weixin_60197334/article/details/136735056