K8S篇之五 kubeadm安装2master+1node集群-之扩容工作节点+安装网络插件calico+安装coredns
八、K8S集群扩容工作节点nflnode1
无需拷贝证书
8.1 在master1节点上查看加入命令
[root@nflmaster1 ~]# kubeadm token create --print-join-command #在master1上操作,拷贝改命令
8.2 拷贝的命令,在node1上执行,无需加入参数
[root@nflnode1 ~]# kubeadm join 192.168.10.200:16443 --token 7tshrf.d96yjtyqww31kumz --discovery-token-ca-cert-hash sha256:6873ba7438ba7755e773614ed8a25f3f4888628be50e242e091f843eae13ece6

8.3 到master1控制节点上验证,工作节点是否扩容成功
[root@nflmaster1 ~]# kubectl get nodes #在master1上操作

8.4 label标签使用--把上图中的none换成work
在控制节点master1上操作
[root@nflmaster1 ~]# kubectl label node nflnode1 node-role.kubernetes.io/worker=worker
[root@nflmaster1 ~]# kubectl get nodes

8.5 扩展命令讲解(可跳过)--CKA考试重点
[root@nflmaster1 ~]# kubectl get pods #获取集群中pods资源信息

①上面默认名称空间没有pods资源。k8s的pods资源默认安装在kube-system名称空间里
[root@nflmaster1 ~]# kubectl get pods -n kube-system

此时的coredns的状态是pending-暂停态。这是因为所有节点都是非就绪态(notready),因为没有安装网络插件--calico
②查看pods资源时,更加详细的信息,加参数 -o wide
[root@nflmaster1 ~]# kubectl get pods -n kube-system -o wide

九、安装K8S中的网络组件-calico
之前规划的pod网段和service网段
| 资源名称 | 网段 |
|---|---|
| pod网段 | 10.10.0.0/16 |
| service网段 | 10.11.0.0/16 |
calico优点:可以作网络策略
9.1 上传calico.yaml文件到master1节点的/root/目录下
calico.yaml文件在下面链接中。
链接:https://pan.baidu.com/s/1yCe7uBscm_cm2gVOhS70Vw?pwd=1234
提取码:1234

9.2 上传后,更新一下资源清单
[root@nflmaster1 ~]# kubectl apply -f calico.yaml

9.3 命令查看pods资源
[root@nflmaster1 ~]# kubectl get pods -n kube-system -o wide #所有pods资源状态正常

其中coredns、calico-kube-controllers使用的IP是之前在 /root/kubeadm-config.yaml文件中设置的pod资源网段
[root@nflmaster1 ~]# kubectl get nodes #查看所有节点的状态-k8s集群状态正常

十、测试K8S集群网络状态和coredns组件
10.1 测试一:测试在K8S创建pod,是否正常可以访问网络,与其他pod互相通信
10.1.1 在node1工作节点上,上传离线压缩包busybox-1-28.tar.gz
链接:https://pan.baidu.com/s/1nR6T-2oZWHUwwVwFjCDW9g?pwd=1234
提取码:1234
[root@nflnode1 ~]# docker load -i busybox-1-28.tar.gz

10.1.2 在master1控制节点上,执行创建pod命令,调度到node1上。
[root@nflmaster1 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh #在master1控制节点上操作

进入名为busybox的pod资源里面:ping百度能通,ping其他pod资源的ip能通;
10.2 测试二:测试K8S集群中部署tomcat服务(tomcat封装在pod里面,外面浏览器访问pod里面的tomcat服务)
10.2.1 把tomcat.tar.gz包上传到nflnode1节点的/root/,手动加载
链接:https://pan.baidu.com/s/10KWH6tHyip4jrfVLd5xddQ?pwd=1234
提取码:1234

[root@nflnode1 ~]# docker load -i tomcat.tar.gz #加载上传好的镜像
10.2.2 把tomcat.yaml资源清单上传到nflmaster1节点的/root/目录下。更新资源清单,验证成功。
链接:https://pan.baidu.com/s/109BHP_jZq3s0aoXuVEpTCw?pwd=1234
提取码:1234

[root@nflmaster1 ~]# cat tomcat.yaml #查看资源清单

[root@nflmaster1 ~]# kubectl apply -f tomcat.yaml #更新资源清单
[root@nflmaster1 ~]# kubectl get pods #查看当前pod


[root@nflmaster1 ~]# kubectl get pods -o wide #查看详细信息,没指定命名空间,默认
[root@nflmaster1 ~]# curl 192.168.200.7:8080 #master1节点上curl tomcat的pod的ip和端口,可以出来页面

[root@nflmaster1 ~]# curl 192.168.200.7:8080 -I #加上 -I 参数,返回200状态码,有内容,ip和端口都是通的

备注:此时外部浏览器是访问不到pod资源中的IP和端口的,pod现在只能在K8S集群中访问,浏览器不属于K8S集群。pod内部、节点机器都可以访问到
10.2.3 设置service-四层代理,使外部浏览器访问pod内部资源
此时,service写到 tomcat-service.yaml资源清单中,上传到master1节点的/root/目录下
链接:https://pan.baidu.com/s/1iokUXc-T0cV4fAtzEW0s-A?pwd=1234
提取码:1234
点击查看tomcat-service.yaml代码
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30080
selector:
app: myapp
env: dev

[root@nflmaster1 ~]# kubectl apply -f tomcat-service.yaml #更新资源清单
[root@nflmaster1 ~]# kubectl get services #查看service资源,此时service资源的网段都是192.168.201.0/24段的地址,之前的规划

[root@nflmaster1 ~]# curl 192.168.200.7:8080 -I #master1节点curl pod资源的tomcat服务
[root@nflmaster1 ~]# curl 192.168.201.92:8080 -I #master1节点curl service资源,service会代理到pod资源的demo-pod中的tomcat服务
[root@nflmaster1 ~]# curl 192.168.10.201:30080 -I #master1节点curl 宿主机:30080,代理到service,再代理到demo-pod中tomcat服务
K8S集群的节点IP:30080都可以访问到

10.3 测试三:测试K8S集群中coredns是否正常
10.3.1 步骤一:在master1上,创建资源并进入
[root@nflmaster1 ~]# kubectl get pods -n kube-system -o wide | grep coredns #在master1节点上查看coredns中pod资源信息 -n kube-system(名称空间kube-system)、-o wide(列出详细信息)

[root@nflmaster1 ~]# kubectl get pods -o wide #在master1节点上查看当前集群的,默认名称空间的pods资源
[root@nflmaster1 ~]# kubectl run busybox-coredns --image busybox:1.28 --restart=Never --rm -it busybox -- sh #节点1上运行pod资源-busybox-coredns
[root@nflmaster2 ~]# kubectl get pods -o wide


10.3.2 步骤二:在master1、master2节点上,查看解析
[root@nflmaster2 ~]# kubectl get svc #在master2上,查看 默认空间 的svc资源
[root@nflmaster2 ~]# kubectl get svc -n kube-system #在master2上,查看 kube-system空间 的svc资源

/ # nslookup kubernetes.default.svc.cluster.local #在节点1的busybox-coredns的pod里面,解析kubernets.default.svc.cluster.local
/ # nslookup tomcat.default.svc.cluster.local

K8S篇之四 kubeadm安装2master+1node集群-之kubeadm安装控制节点+扩容控制节点+扩容工作节点+安装网络插件calico+安装coredns

浙公网安备 33010602011771号