环境:
Master:10.10.86.12
Node1:10.10.86.13
Node2:10.10.86.14
8c 16G 100G(建议资源调大,后续部署产品比较耗费资源)
1.进入终端配置网络:(必须切换用户为root)
/etc/sysconfig/network-scripts/ifcfg-ens192
Rehat 配置文件位置在:
DEVICE=ens192
ONBOOT=yes #是否开机自启动该网卡配置
IPADDR=10.10.86.12
NETMASK=255.255.255.0
GATEWAY=10.10.86.254
DNS1=114.114.114.114
TYPE=Ethernet
重启机器后
Ip a 检查配置:
2.扩展根分区:
刷新分区创建物理卷:
partprobe /dev/sda
sudo vgcreate rhel /dev/sda3
将新分区加入vg
vgextend rhel /dev/sda3
将卷组中的空闲空间扩展到根分区逻辑卷
lvextend -l +100%FREE /dev/rhel/root
刷新根分区
xfs_growfs /dev/rhel/root
查看磁盘使用情况,扩展之前和之后是不一样的
参考文档:https://zhuanlan.zhihu.com/p/83340525
部署k8s:
1.禁用交换内存:(root权限)
swapoff -a
注释掉/etc/fstab最后一行:
禁用SELinux
修改/etc/selinux/config文件,将SELINUX设置为permissive或者disabled,确保重启系统后仍然有效,必须重启!!!!!。
关闭防火墙:
systemctl status firewalld
systemctl stop firewalld
修改hosts文件
设置主机名(不设置也可以,但是要保证主机名不相同)
master上
hostnamectl set-hostname master.local
node01
hostnamectl set-hostname node01.local
node02
hostnamectl set-hostname node02.local
修改本地hosts文件:
一般是/etc/host目录下
10.10.86.12 master.local
10.10.86.13 node01.local
10.10.86.14 node02.local
修改内核参数:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
echo "1" > /proc/sys/net/bridge/bridge-nf-call-ip6tables
当无法安装某些软件包时,换镜像源(重点!!!!!):
在vim /etc/yum.repos.d/aliyun_yum.repo
[ali_baseos]
name=ali_baseos
baseurl=centos-stream-9-stream-BaseOS-x86_64-os安装包下载_开源镜像站-阿里云
gpgcheck=0
[ali_appstream]
name=ali_appstream
baseurl=centos-stream-9-stream-AppStream-x86_64-os安装包下载_开源镜像站-阿里云
gpgcheck=0
[kubernetes]
name=Kubernetes
baseurl=kubernetes-yum-repos-kubernetes-el7-x86_64安装包下载_开源镜像站-阿里云
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
安装k8s组件
yum install -y kubelet kubeadm kubectl
安装容器:
1.安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装container
yum install containerd -y
4.生成配置文件
containerd config default > /etc/containerd/config.toml
5.替换 containerd 默认的 sand_box 镜像,编辑 /etc/containerd/config.toml
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"
6.启动服务
systemctl restart containerd && systemctl enable containerd
Bash自动补全:
crictl completion bash > /etc/bash_completion.d/crictl
kubectl completion bash > /etc/bash_completion.d/kubectl
kubeadm completion bash > /etc/bash_completion.d/kubeadm
echo runtime-endpoint: unix:///var/run/containerd/containerd.sock > /etc/crictl.yaml
echo H4sICN/FMWMAAzExAI2RX0uEQBTF3/0UJ/FBgwkfY0NocQ2C1hU3WBYRMRtTMkfGEYLF794dcykjqLc7d879nfsnK5TMnvK+yvJBiUK8dQ1X3HZwMoC6RJLAtE7+bhtlh1282SduOpq48GD2YpAFN5GmN1AVb0kPNKLIGxSDhOhUDwLzKa8BcRA9HD3bmRIk8ZbgKfR1TA6T5mxPWhMeWTLzcmmHycazbCxQt+nKXVlfwJG+CTKCsRfecpkrzvTMbJ63Fi0+2+LN3PC/yX8iy/rnBmDZWkV1YAe9Xm1FW2Vs7tOZSyVXg2zhGhNlNM7nARN6tdUzL/OhUfr5LWxF3+UFie6Q/XpdUNbg752QitoKH9f3YRBvsnC9DfbR2g+81+v+qhbGB4QnwmEcAgAA | base64 -d | zcat > /etc/bash_completion.d/ctr
修改containerd默认配置:
containerd config default > /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml
pause_image=`kubeadm config images list | grep /pause:`
sed -i "s#sandbox_image = .*#sandbox_image = \"$pause_image\"#" /etc/containerd/config.toml
systemctl restart containerd
安装容器(二选一):
containerd 配置代理(需将下面例子中10.10.8.66:1081可换成可用的代理)
vi /lib/systemd/system/containerd.service
# 在 [Service] 之后加入以下内容
Environment="HTTP_PROXY=http://10.10.8.66:1081/"
Environment="HTTPS_PROXY=http://10.10.8.66:1081/"
Environment="NO_PROXY=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.0/8,registry.dev-rs.com"
执行命令:
systemctl daemon-reload
systemctl restart containerd
安装 CRI-O:(安装过程比较慢)
export VERSION=1.26
sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_8/devel:kubic:libcontainers:stable.repo
sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo
sudo dnf install cri-o
master操作:
sudo systemctl enable kubelet
sudo systemctl start kubelet
初始化master节点:
kubeadm init --pod-network-cidr=192.168.0.0/16
[root@master containerd]# mkdir -p $HOME/.kube
[root@master containerd]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master containerd]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装网络插件calico:
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
$ kubectl get pods -n kube-system
sudo kubeadm join 10.128.15.228:6443 --token cqb8vy.iicmmqrb1m8u9cob --discovery-token-ca-cert-hash sha256:79748a56f603e6cc57f67bf90b7db5aebe090107d540d6cc8a8f65b7 85de7543
注意:若此处加入集群出现报错:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
解决办法:
Node节点执行:
sudo modprobe overlay
sudo modprobe br_netfilter
1) 配置nfs
k8s中使用nfs共享存储(nfs-subdir-external-provisioner)
准备一台ubuntu22.04机器输入如下:
假定nfs服务器IP为10.10.86.226 将 /nfsdata 路径作为共享目录
# 切换到 root 用户执行
apt install nfs-kernel-server -y
systemctl start nfs-kernel-server.service
mkdir -p /nfsdata
# 注意:请替换下面的IP 为两个slave的ip
echo "/nfsdata 10.10.86.13(rw,sync,no_root_squash) 10.10.86.14(rw,sync,no_root_squash)" >> /etc/exports
exportfs -a
showmount -e
分别在两台slave节点执行:
Sudo yum install nfs-utils -y
在部署完成后,在master机器上等待所有pod起来后,可开始部署安装产品。
后续会持续在这个平台做k8s知识分享,大家感兴趣的欢迎关注。