kubernetes集群部署
·
kubernetes集群部署
集群各节点:
| 主机名 | IP地址 | 角色 | 操作系统 | 硬件配置 |
|---|---|---|---|---|
| master | 192.168.100.10 | 管理节点 | Rocky Linux 9.4 | 2core/4G内存/50G |
| node1 | 192.168.100.13 | 工作节点 | Rocky Linux 9.4 | 2core/4G内存/50G |
| node2 | 192.168.100.14 | 工作节点 | Rocky Linux 9.4 | 2core/4G内存/50G |
一、操作系统准备
配置/etc/hosts文件(全部节点)
vim /etc/hosts 192.168.100.10 master 192.168.100.13 node1 192.168.100.24 node2
关闭防火墙与selinux(全部节点)
配置国内系统镜像源和安装epel源(全部节点)
# 配置国内系统镜像源 sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \ -i.bak \ /etc/yum.repos.d/rocky-*.repo # 安装epel源 vim /etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/ #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/$basearch/ enabled=1 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever [epel-debuginfo] name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug/ #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/$basearch/debug/ enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux $releasever - $basearch - Source # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/ #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/source/tree/ enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1
开启时钟同步(全部节点)
systemctl restart chronyd systemctl enable chronyd hwclok -w
修改系统最大打开文件数(全部节点)
vim /etc/security/limits.conf # 在文件最末尾,# End of file上面添加 * soft nofile 65535 * hard nofile 65535 # End of file
修改内核参数(全部节点)
vim /etc/sysctl.conf net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_tw_buckets = 20480 net.ipv4.tcp_max_syn_backlog = 20480 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_fin_timeout = 20 sysctl -p
关闭swap(全部节点)
sed -ri 's/.*swap.*/#&/' /etc/fstab swapoff -a
安装系统性能分析工具和其他(全部节点)
yum install -y gcc autoconf sysstat
开启bridge网桥过滤(全部节点)
# 在/etc/sysctl.d/目录下创建一个新文件 vim /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 # 加载配置文件,使其生效 sysctl -p /etc/sysctl.d/k8s.conf # 加载br_netfilter模块,并查看 modprobe br_netfilter && lsmod | grep br_netfilter
二、docker环境准备
配置阿里云docker源(全部节点)
yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker(全部节点)
# 查看可用的docker版本 yum list docker-ce.x86_64 --showduplicates | sort -r # 找到25.0.5-1.el9安装版本 yum -y install docker-ce-25.0.5-1.el9
配置Docker Cgroup控制组(全部节点)
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
启动docker(全部节点)
systemctl daemon-reload systemctl restart docker systemctl enable docker
三、配置cri-docker
下载cri-docker(全部节点)
wget -c https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9.amd64.tgz
解压到/usr/local/bin/(全部节点)
tar -xvf cri-dockerd-0.3.9.amd64.tgz --strip-components=1 -C /usr/local/bin/
下载cri-docker service文件与socket文件(全部节点)
wget -O /etc/systemd/system/cri-docker.service https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service wget -O /etc/systemd/system/cri-docker.socket https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.socket
编辑cri-docker.server文件(全部节点)
vim /etc/systemd/system/cri-docker.service # 修改ExecStart行内容 ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --cri-dockerd-root-directory=/var/lib/docker
编辑cri-docker.socket文件(全部节点)
vim /etc/systemd/system/cri-docker.socket # 修改ListenStream行内容 ListenStream=/var/run/cri-dockerd.sock
启动cri-docker并设置开机自启(全部节点)
systemctl restart cri-docker systemctl enable cri-docker
四、部署kubernetes集群
配置kubernetes源(全部节点)
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key EOF
安装集群所需软件包kubelet kubeadm kubectl(全部节点)
yum -y install kubelet kubectl kubeadm
配置k8s Cgoup控制组(全部节点)
vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
配置kubelet自启动(全部节点)
systemctl restart kubelet systemctl enable kubelet
初始化集群(master节点)
# 打印master节点所需的镜像文件 kubeadm config images list # 打印集群初始化配置文件 kubeadm config print init-defaults > kubeadm-config.yaml # 修改参数 vim kubeadm-config.yaml ...... advertiseAddress: 192.168.100.10 # 修改,集群初始化的master节点IP ...... criSocket: unix:///var/run/cri-dockerd.sock # 修改使用docker ...... name: master # 修改节点名称 ...... imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 修改使用阿里云镜像仓库 ...... # 注意:修改以上标记的位置即可 # 使用配置文件初始化 kubeadm init --config kubeadm-config.yaml --upload-certs # 初始化生成的内容建议复制保存到一个文件里,后面有用 # 初始化完成后运行 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
工作节点加入初始化集群(在两个工作节点运行)
# 该命令在初始化后会生成,只需在命令后面加上--cri-socket=unix:///var/run/cri-dockerd.sock即可
kubeadm join 192.168.100.10:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:f3fbdf1cd4d9dd036819653a2e25f8a61334bfd865a6e760644486267dcae144 --cri-socket=unix:///var/run/cri-dockerd.sock
下载calico文件(master节点)
wget https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml
创建calico网络(master节点)
kubectl apply -f calico.yaml
查看部署状况(master节点)
# 查看集群各节点状态 NAME STATUS ROLES AGE VERSION master Ready control-plane 2d3h v1.28.15 node1 Ready <none> 2d3h v1.28.15 node2 Ready <none> 2d3h v1.28.15 # 状态必须都是Ready # 查看k8s集群的各组件 kubectl get po -n kube-system NAME READY STATUS RESTARTS AGE calico-kube-controllers-9d57d8f49-sd45z 1/1 Running 4 (11m ago) 2d3h calico-node-4tzp5 1/1 Running 1 (10m ago) 2d3h calico-node-hgn9j 1/1 Running 1 (11m ago) 2d3h calico-node-sps7n 1/1 Running 4 (11m ago) 2d3h coredns-6554b8b87f-j4m6b 1/1 Running 4 (11m ago) 2d3h coredns-6554b8b87f-jknsd 1/1 Running 4 (11m ago) 2d3h etcd-master 1/1 Running 1 (11m ago) 2d3h kube-apiserver-master 1/1 Running 1 (11m ago) 2d3h kube-controller-manager-master 1/1 Running 1 (11m ago) 2d3h kube-proxy-knlmm 1/1 Running 1 (11m ago) 2d3h kube-proxy-t6glq 1/1 Running 1 (10m ago) 2d3h kube-proxy-tcfm4 1/1 Running 4 (11m ago) 2d3h kube-scheduler-master 1/1 Running 1 (11m ago) 2d3h # 必须是全1,Running状态
更多推荐
所有评论(0)