赞
踩
目录
最小化搭建 master+node+node集群
虚拟机配置均为2核+2GB内存+20GB硬盘
工具 VMware + Xshell
先确定三台虚拟机的名字和ip
- k8s-master 192.168.121.134
-
- k8s-node1 192.168.121.135
-
- k8s-node2 192.168.121.136
1.关闭防火墙
sudo systemctl stop firewalld sudo systemctl disable firewalld
2.关闭 selinux
sudo sed -i 's/enforcing/disabled/' /etc/selinux/config
3.关闭 swap
- sudo vim /etc/fstab # 永久关闭
- #注释掉下列配置
- # /dev/mapper/centos-swap swap swap defaults 0 0
4.重启机器
- sudo systemctl reboot
-
- free -m
# swap下的值都为0表示swap已被关闭
5.设置主机名
sudo hostnamectl set-hostname k8s-master
6.在 k8s-master机器添加hosts
- vim /etc/hosts
-
- # 插入以下语句
- 192.168.121.134 k8s-master
-
- 192.168.121.135 k8s-node1
-
- 192.168.121.136 k8s-node2
7.将桥接的IPv4流量传递到iptables
- sudo 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
-
- # 使其生效
- sudo sysctl --system
8.设置时间同步
- sudo yum install ntpdate -y
- sudo ntpdate time.windows.com
9.添加k8s yum源
- sudo cat > /etc/yum.repos.d/kubernetes.repo << EOF
- [kubernetes]
- name=Kubernetes
- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- repo_gpgcheck=0
- gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
- https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
- EOF
10、安装containerd
- # 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
- sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
- # 设置 yum 源
- # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- sudo yum install containerd -y
- sudo containerd config default > /etc/containerd/config.toml
- sudo systemctl restart containerd
- sudo systemctl status containerd
-
- # 替换 containerd 默认的 sand_box 镜像,编辑 /etc/containerd/config.toml
- sudo vim /etc/containerd/config.toml
- #找到 sandbox_image字段,修改为:
- sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"
- # 重启containerd
- sudo systemctl daemon-reload
- sudo systemctl restart containerd

11、配置containerd 中国镜像源
- sudo vim /etc/containerd/config.toml
- 在 [plugins."io.containerd.grpc.v1.cri".registry] 下把 config_path 的值修改为 "/etc/containerd/certs.d"
-
- sudo mkdir -p /etc/containerd/certs.d/docker.io
- sudo vim /etc/containerd/certs.d/docker.io/config.toml
- 写入:
- server = "https://docker.io"
- [host."https://registry.docker-cn.com"]
-
- sudo systemctl restart containerd
11、查看可以安装的版本
sudo yum list kubelet --showduplicates | sort -r
12、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群
sudo yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
13.命令启动kubelet服务
- sudo systemctl start kubelet
-
- # 开机自启
-
- sudo systemctl enable kubelet
至此 master节点已经部署完毕了,克隆master节点,并修改另外两台机器的ip地址以及主机名,创建work节点。
14、初始化(k8s-master)
这是一个用于初始化Kubernetes集群的命令。它的意思是:
- 使用API服务器的自宣传地址192.168.56.11来初始化Kubernetes集群。
- 使用镜像仓库registry.aliyuncs.com/google_containers来拉取Kubernetes相关的容器镜像。
- 使用Kubernetes版本v1.25.0来初始化Kubernetes集群。
- 使用服务CIDR为10.96.0.0/12来分配服务集群IP地址。
- 使用Pod网络CIDR为10.244.0.0/16来分配Pod网络IP地址。
- # 初始化k8s ,使用中国镜像源拉取镜像apiserver-advertise-address为自己的主机地址
- sudo kubeadm init --apiserver-advertise-address=192.168.121.134 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.25.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
-
- #如果出现以下字符,说明初始化成功。
- Then you can join any number of worker nodes by running the following on each as root:
- kubeadm join 192.168.56.11:6443 --token s0d1qo.dbcwcms72y4y3j7x \
- --discovery-token-ca-cert-hash sha256:5ad74702eebb9f3c254c3e48a68792e93e07f97c104cdd9b7f1fcf
初始化时报错
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
执行以下命令然后重新初始化
- modprobe br_netfilter
- sysctl -p
若没出现
则手动编辑添加
- vi /etc/sysctl.conf
-
- net.bridge.bridge-nf-call-ip6tables = 1
-
- net.bridge.bridge-nf-call-iptables = 1
安装失败则执行以下命令再重新安装
- kubeadm reset # 清除之前安装的组件和配置文件
-
- rm -rf /etc/kubernetes/ # 删除Kubernetes配置文件
-
- rm -rf .kube/ # 不删除则运行kubectl get nodes时报错
初始化init时出现Initial timeout of 40s passed,执行下列命令查看日志
journalctl -xeu kubelet
安装成功显示
node节点执行以下命令
- kubeadm join 192.168.121.134:6443 --token yvfkxm.zjkefeo3pvvl4sqj \
- --discovery-token-ca-cert-hash sha256:cef18677004142124720a763cb6e8c17dceb9d5f77a9f0dee8305e3170ceddd3
1.在master家目录写入K8S的config
- mkdir -p $HOME/.kube
-
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
-
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.查询节点状态
kubectl get nodes
启动成功
至此 一个简单的k8s集群搭建完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。