虚拟机安装Kubernetes集群(二)
本小节接上文,这一节我们将开始部署 K8S 集群。
1. 拷贝虚拟机
本次部署的 K8s 集群由 1 个 Master 节点和 3 个 Worker 节点组成。上一节中我们已经在 master-1 节点安装了 Docker 和 K8s 运行环境,另三个节点直接将这个虚拟机拷贝三份即可。
首先我们将 master-1 虚拟机关机。在 Virtual@R_263_2@ 管理控制台主,右键 master-1 虚拟机,点击复制...
。
选择专家模式:
进入专家模式,先设定新虚拟机,这里使用 worker-1
方便区分,副本类型选择 完全复制
,MAC地址设定 为所有网卡重新MAC地址
。然后点击复制,virtual@R_263_2@ 开始复制虚拟机。
复制完成后,可以看到控制台中出现了新的虚拟机 worker-1。
我们一共需要三个 worker 节点,接下来再重复上面的步骤两次,完成之后我们就拥有了四台虚拟机。
2. 配置静态IP和主机名
将所有虚拟机都启动起来,在虚拟机中使用ip a
命令查看各个虚拟机的IP地址,由于认系统使用的DHCP服务,网卡了当前网段内空闲的IP,地址我们希望各个节点的IP能固定起来,不要随意变动。
根据当前的网络状态(192.168.1.0/24网段),我们计划节点配置如下:
Tips:
不同的网络环境的网段、IP 地址也不一致,需要根据自己的实际情况调整,设定变更的IP地址需要确认没有被占用。
1. 设定 master-1 的主机名
declare -x HOSTNAME="master1.node"
hostname $HOSTNAMEcat << EOF > /etc/hostname$HOSTNAMEEOFcat << EOF > /etc/hosts 127.0.0.1 $HOSTNAME192.168.1.200 master1.node 192.168.1.201 worker1.node 192.168.1.202 worker2.node 192.168.1.203 worker3.node EOF
2. 设定 master-1 的 IP 地址:
# 认的网卡就是enp0s3vi /etc/syscon/network-scripts/ifcfg-enp0s3
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" NAME="enp0s3" DEVICE="enp0s3" ONBOOT="yes" # 指定IP地址、网关和掩码,根据实际情况进行 IPADDR=192.168.1.200 GATEWAY=192.168.1.1 NETMASK=255.255.255.0 DNS1=223.6.6.6
保存更改:
# 重载网口配置nmcli c reload
输入命令hostname
和ip a
查看master-1的主机名和IP更改。
3. 对worker-1、 worker-2、worker-3节点进行上述操作,一定要注意主机名和IP地址变更。
3. 配置Master节点
使用宿主机的命令行工具 ssh 到 master-1 节点,先读取我们的 K8s 版本号:
version=`cat .k8s.version`
设定kubeadmkubeadm.yaml
cat << EOF > kubeadm.yaml apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConuration controllerManager: extraArgs: horizontal-pod-autoscaler-use-rest-clients: "true"horizontal-pod-autoscaler-sync-period: "10s"node-monitor-grace-period: "10s"apiServer: extraArgs: runtime-con: "api/all=true"kubernetesVersion: "v$version"imageRepository: "registry.aliyuncs.com/google_containers"EOF
使用此进行 master 节点安装部署:
kubeadm init --con kubeadm.yaml
等待一段时间,部署完成,它会给我们一段
master-1上执行:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/consudo chown $(id -u):$(id -g) $HOME/.kube/con
Tips: 在worker节点上进行如下操作可以将节点到K8s集群,但现在还不急,先记下来。
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \ --discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
执行kubectl get nodes
查看当前节点的状态:
发现状态为NotReady
,原因是我们尚未配置网络相关的,一些跟k8s服务相关容器无法连接到网络。
常用的容器网络接口有 Flannel 、Calico、 等,这里我们选择简单易用的 网络
kubectl apply -f https://cloud..works/k8s/net?k8s-version=$version
安装完毕后,查看当前节点状态变为Ready
。
4. 配置 Worker 节点
在三个 Worker 节点上执行之前记录的节点指令
Tips: 记得替换成自己操作环境中的指令
kubeadm join 192.168.1.200:6443 --token 4hmk4a.4h0zrymxjmudhjmq \ --discovery-token-ca-cert-hash sha256:edf04a8954bb2729d8d603e14e802e72109ae10346503b5b283481ce08b02186
耐心等待 3-5 分钟,在 master 节点执行kubectl get nodes -o wide
查看节点详情,所有节点状态均为Ready
。
至此,K8s 集群已经初步搭建完成。
5. 小结
我们使用 kubeadm 部署了“1 master + 3 worker” Kubernetes 集群,使用 网络,已初步可用。