(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在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 nodesslave结点加入集群(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(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,svchttp://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
