浏览器访问 https://labs.play-with-k8s.com/ 并登陆(可用dockerhub账号直接登录)
点击 +ADD NEW INSTANCE新增第一个实例
初始化节点,执行
kubeadm init --apiserver-advertise-address $(hostname -i)
kubeadm init和kubeadm join两个命令用于快速构建k8s集群, 执行init 后会自动生成join命令
执行完毕后,记录下kubeadm join命令,后面会在其他节点上执行
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be
点击 +ADD NEW INSTANCE,继续新增四个实例
在这些实例中分别执行:
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be
执行成功的节点的左侧图标会发生变化:
在master节点上执行:
kubectl get nodes
可以看到5个节点已经初步部署完成
此时节点的状态为NotReady,继续在master上部署网络代理:
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
查看节点状态已经为Ready:
kubectl get nodes
在mater上执行:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml
每个nginx会自动被部署到node节点中,默认是随机选择3个节点。查看pod状态
kubectl get pods -o wide
pod为Running状态表示部署成功,正常运行中
查看服务状态:
kubectl get svc
可以看到"my-nginx-svc"服务已经启动,内部80端口被映射到了外部30937端口
ss -anlp|grep 30937
30937端口的确被监听,通过kube-proxy网络管理实现
将pod上的80端口暴漏给master节点
kubectl expose deploy/my-nginx --port 80
查看服务地址:
kubectl get svc my-nginx -o go-template --template '{{ .spec.clusterIP }}'
直接对10.100.214.243进行curl访问
curl 10.100.214.243
可以看到nginx的默认欢迎界面,至此在k8s上部署nginx完成
删除后点击+ADD NEW INSTANCE新增节点后执行前面记录的kubeadm join命令:
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be
当前部署3个nginx实例,实际上我们有5个节点,当slave节点失败了之后,直接忽略删除也可以
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。