三、k8s 1.29 之 安装2

一、环境初始化

1、关闭swap分区

swap分区是当内存即将耗尽的时候,将小块磁盘当做内存使用,但由于磁盘的读写速度远低于内存,所以会影响集群性能

复制代码
free -m
查看swap分区
复制代码
swapoff -a 临时关闭
复制代码
永久关闭,swap
原理是注释掉配置文件中的swap分区命令
sed -i 's:/dev/mapper/rl-swap:#/dev/mapper/rl-swap:g' /etc/fstab

2、修改主机名

因为kubeadm在安装kubernetes的时候,会默认将主机名称设置成节点名称,当前三台主机名都叫localhost,有点别扭

复制代码
hostnamectl set-hostname k8s-master01

hostnamectl set-hostname k8s-node01 / 02

编辑

vi /etc/hosts

habor是后期的镜像仓库

复制代码
192.168.125.101 k8s-master01 m1
192.168.125.102 k8s-node01 n1
192.168.125.103 k8s-node02 n2
192.168.125.104 harbor

测试,任意节点

ping n1

3、安装ipvs

复制代码
yum install -y ipvsadm

4、开启路由转发

复制代码
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

刷新生效
sysctl -p

5、加载bridge(可选)

帮助我们后期做调试

复制代码
yum install -y epel-release
yum install -y bridge-utils

开启过滤机制

复制代码
modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysct1.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >>/etc/sysct1.conf

刷新
sysctl -p

6、安装docker

详细见 一、k8s 1.29 之 docker 模拟 pod

复制代码
reboot

7、检查

ip addr

可见192网卡已经没信息了

ping www.baidu.com

ikuai -- 终端监控 -- ipv4

这就是在生产环境中真实的网络拓扑结构

8、安装 cri-docker

前因后果

docker 的语言是 OCRI ,其他容器是CRI,k8s官方为了统一kubelet 发出的命令,所以给 docker开发了个翻译器,将CRI 翻译为 OCRI

docker之死:k8s公司突然决定不维护这个翻译器了,

最后docker公司自己维护了个翻译器,就叫 cri-docker


复制代码
cd /root

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9.amd64.tgz

tar -xf cri-dockerd-0.3.9.amd64.tgz

移动可执行文件
mv cri-dockerd/cri-dockerd /usr/bin/

增加可执行权限
chmod a+x /usr/bin/cri-dockerd

编写服务管理脚本

复制代码
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

添加套接字脚本

复制代码
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

启动并启用 cri-docker 服务

复制代码
重新加载 systemd 系统管理器的配置文件
systemctl daemon-reload

设置cri-docker服务在系统启动时自动运行
systemctl enable cri-docker

systemctl start cri-docker

检查cri-docker服务
systemctl is-active cri-docker

二、安装组件

1、安装kubeadm

1.1 上传安装 | 推荐

将下载好的 "kubernetes-1.29.2-150500.1.1.tar" 压缩包上传到各节点的 /root 的目录下

解压

复制代码
tar -zxvf kubernetes-1.29.2-150500.1.1.tar.gz

安装所有本地软件包

复制代码
cd kubernetes-1.29.2-150500.1.1

yum -y install *
设置 kublet 开机自启
复制代码
systemctl enable kubelet.service

启动过程: linux -- docker --- cri-docker -- 容器

上面的启动过程,docker会启动容器,但是容器噶了他不管,所以引入kubulet,它是引导k8s启动的关键

linux -- docker --- cri-docker -- 容器 -- kubulet -- apiserver...

1.2 下载安装

添加 kubeadm yum 源

复制代码
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

安装 kubeadm 1.29 版本

复制代码
yum install -y kubelet-1.29.0 kubectl-1.29.0 kubeadm-1.29.0
systemctl enable kubelet.service

2、初始化主节点

复制代码
kubeadm init --apiserver-advertise-address=192.168.125.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.29.2 --service-cidr=10.10.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket unix:///var/run/cri-dockerd.sock
复制代码
 mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get node 查看看见一个未就绪的节点

两个从节点执行

复制代码
kubeadm join 192.168.125.101:6443 --token tuk8yr.xa4i0nwtva8fe7sh --discovery-token-ca-cert-hash sha256:e653da5eaace182a42b24dc05e78ce21f21cc6b86db93498e08cc00eccfc51a1 --cri-socket unix:///var/run/cri-dockerd.sock

前面一段是主节点产生的

再次 get node 看见一主两从

3、安装网络插件

下载解压工具

复制代码
yum -y install unzip

上传 calico 压缩包到 /root

解压缩

复制代码
unzip calico.zip

进入解包目录

前两个分别是 calico 用到的所有镜像 、 配置文件

解压

复制代码
 tar -zxvf calico-images.tar.gz 

选中四个镜像,三个节点都要导入到docker

复制代码
在 /root/calico 下

docker load -i calico-images/calico-cni-v3.26.3.tar
docker load -i calico-images/calico-kube-controllers-v3.26.3.tar
docker load -i calico-images/calico-node-v3.26.3.tar
docker load -i calico-images/calico-typha-v3.26.3.tar

在集群 主机 主节点上 应用部署文件

复制代码
kubectl apply -f calico-typha.yaml

部署前 节点都没准备好,部署后稍得节点就变成就绪了

使用之前 查看配置文件是否改了

a

b 网段

复制代码
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/calico-typha.yaml -o calico.yaml
	CALICO_IPV4POOL_CIDR	指定为 pod 地址
	
# 修改为 BGP 模式
# Enable IPIP
- name: CALICO_IPV4POOL_IPIP
  value: "Always"  #改成Off

查看 pod

复制代码
kubectl get pod -A

这样代表集群已经安装好了,拍照保存

三、其他

1、网络证书

在 /etc/kubernetes/pki 下有很多 https的证书,用来加密容器之间的通信

2、授权文件

3、组件启动配置文件

相关推荐
HWL567922 分钟前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js
小米里的大麦2 小时前
022 基础 IO —— 文件
linux
Xの哲學2 小时前
Perf使用详解
linux·网络·网络协议·算法·架构
门前灯2 小时前
Linux系统之iprconfig 命令详解
linux·运维·服务器·iprconfig
tb_first2 小时前
k8sday09
linux·云原生·容器·kubernetes
huangyuchi.3 小时前
【Linux系统】动静态库的制作
linux·运维·服务器·动态库·静态库·库的简单制作
闻不多3 小时前
用llamaindex搭建GAR遇到400
android·运维·服务器
jim写博客3 小时前
Linux进程概念(四)环境地址变量
linux·运维·服务器
是小崔啊3 小时前
【Jenkins】01 - Jenkins安装
运维·jenkins