kubeadm搭建k8s集群

it2026-08-03  1

前提

(1)三台能联网的虚拟机

角色IP配置master221192.168.129.221CPU2核心,内存2Gslave223192.168.129.223CPU2核心,内存2Gslave224192.168.129.224CPU2核心,内存2G

(2)操作系统 CentOS7   64位

集群中所有服务器之间可以网络互通,访问外网

禁止swap分区

安装步骤

环境配置

关闭防火墙(master221,slave223,slave224)

systemctl stop firewalld systemctl disable firewalld

 

关闭selinux(master221,slave223,slave224)

sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 临时

关闭swap (master221,slave223,slave224)

swapoff -a # 临时 sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久

根据规划设置主机名(根据自己的命名,去每一台执行自己的命令)

hostnamectl set-hostname master221 #在221结点执行 hostnamectl set-hostname slave222 #在222结点执行 hostnamectl set-hostname slave223 #在223结点执行

在master添加hosts(master221,slave223,slave224)

cat >> /etc/hosts << EOF 192.168.129.221 master221 192.168.129.223 slave223 192.168.129.224 slave224 EOF

将桥接的IPv4流量传递到iptables的链(master221,slave223,slave224)

cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system #生效

时间与windows同步 

yum install ntpdate -y ntpdate time.windows.com

安装Docker(master221,slave223,slave224)

安装Docker

#下载指定版本docker wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo #安装docker yum -y install docker-ce-18.06.1.ce-3.el7 #开启docker服务 systemctl enable docker && systemctl start docker #查看docker版本 docker --version #查看docker信息 docker info

 设置docker仓库为阿里镜像仓库

cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF # 重启docker systemctl restart docker # 查看仓库是否加入成功 docker info

 添加阿里云YUM软件源

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

安装kubeadm、kubelet、kubectl(master221,slave223,slave224)

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 systemctl enable kubelet

 部署k8s master、加入node

在192.168.129.221(master221)上执行

注意:apiserver-advertise-address属性值为master221的ip

kubeadm init \ --apiserver-advertise-address=192.168.129.221 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16

按照上图输入的日志在master执行方框1里面的内容(master221)

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

查询节点(master221)

kubectl get nodes

slave结点加入集群(slave223,slave224)

注意:下面内容为上上图上方框中的内容

kubeadm join 192.168.129.221:6443 --token un45uv.6l06g4q8alkcgelb \ --discovery-token-ca-cert-hash sha256:46617920d7a26a52d5d1330ab07f6af778e59db921c691c04d7679c0dab0eacc

查询结点(master221,slave223,slave224)

kubectl get nodes

 

注意:此时在slave223,slave223中执行上面遇见可能会出现下面情况,解决情况如下:

参考:https://blog.csdn.net/afriendlyman/article/details/105360148

上面的链接中的解决方法是在配置环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf  最后是admin.conf文件,你要看看你的文件叫什么名字,我的文件叫kubelet.conf

 

部署CNI网络插件

在主结点部署CNI(master221)

注意:如果出现连接失败,多执行几次

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 查看pod的状态

kubectl get pods -n kube-system

稍等片刻再次执行,上面的命令,直到上图中所有的STATUS为runing

查询结点(master221,slave223,slave224)

kubectl get nodes

此时所有的结点状态为Ready状态

测试集群

在Kubernetes集群中创建一个nginx pod,验证是否正常运行

#创建pod kubectl create deployment nginx --image=nginx #暴露端口 kubectl expose deployment nginx --port=80 --type=NodePort #查看pod,service信息 kubectl get pod,svc

http://192.168.129.221:32373/ 就访问到nginx

 

参考

虚拟机IP配置

https://www.cnblogs.com/chengssblog/p/6531964.html

k8s环境搭建

https://blog.csdn.net/pastthewind/article/details/109071778

https://www.bilibili.com/video/BV1w4411y7Go?from=search&seid=10674735696374803267

问题:no configuration has been provided, try setting KUBERNETES_MASTER environment variable

https://blog.csdn.net/afriendlyman/article/details/105360148

最新回复(0)