Kubernetes calio,dashboard,Kuboard 部署

网友投稿 589 2022-09-27

Kubernetes calio,dashboard,Kuboard 部署

Kubernetes calio,dashboard,Kuboard 部署

Calico网络

两台Docker主机如何实现容器互通?

Docker跨主机会分配相同的的IP,这样肯定是无法通信的,在本地ping 172.17.0.2肯定是找的该主机上面的172.0.02不会去找另外一台主机上面的容器

Q:

1、统一管理这些k8s node网段,保障每个容器分配不一样的ip

2、要知道转发哪个docker主机?

3、怎么实现这个转发(从docker主机1上容器发送到另一台docker主机上容器)

A:

1、给每个docker主机分配唯一的网段

2、做好记录,每个docker主机对应的网段

3、可以使用iptables或者把宿主机当做一个路由器,配置路由表

Docker里面的容器实际上都连接到了dokcer0这个网桥上面,他们之间的通信就像局域网之间的通信。所以本机的docker容器网络通信已经解决了。引入CNI主要是为了解决容器跨主机网络通信。

为了解决这些网络需求需要部署网络组件,CNI是容器是一个容器网络接口规范,k8s就采用了这个规范去实现的

K8s CNI网络模型

K8s是一个扁平化网络。(只要部署了网络插件,k8s当中的网络就全部打通了)

即所有部署的网络组件都必须满足如下要求:

• 一个Pod一个IP

• 所有的 Pod 可以与任何其他 Pod 直接通信

• 所有节点可以与所有 Pod 直接通信

• Pod 内部获取到的 IP 地址与其他 Pod 或节点与其通信时的 IP 地址是同一个

主流网络组件有:Flannel、Calico等

k8s集群安装完毕验证

测试kubernetes集群

- 验证Pod工作

- 验证Pod网络通信

- 验证DNS解析

验证Pod工作

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

[root@k8s-master ~]# kubectl create deployment nginx --image=nginx[root@k8s-master ~]# kubectl expose deployment nginx --port=80 --type=NodePortservice/nginx exposed[root@k8s-master ~]# kubectl get pod,svcNAME READY STATUS RESTARTS AGEpod/nginx-6799fc88d8-drb2s 1/1 Running 0 109sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 443/TCP 103mservice/nginx NodePort 10.99.50.2 80:31332/TCP 23s

内部访问是通过cluster ip 10.99.50.2,集群内部访问是这个IP,这个可以在任意一个节点都可以访问

[root@k8s-master ~]# curl 10.99.50.2Welcome to nginx![root@k8s-node1 ~]# curl 10.99.50.2Welcome to nginx!

如果要在集群外部浏览器访问要使用31332端口,通过任意一个节点的IP+端口,这个端口随机生成的,31332是对外暴露的端口,任意一个节点的ip加上该端口号就可以访问

验证Pod网络通信

主要部署的calio组件是否是正常的

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico  项目还实现了 Kubernetes 网络策略,提供ACL功能。

简单理解就是calio就是网络插件的一种

比如通过clusterip +端口号  在任意一个节点都是可以访问的,这个容器其实是分配在其中一个节点,访问该ip会转发到该容器上面,相对于虚拟的负载均衡器一样,这是一个VIP,帮你转发到后端的容器当中。这样在每台机器访问意味着容器不管是在哪个节点,都能够帮你提供响应

[root@k8s-master ~]# kubectl get pod -n kube-system -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEScalico-kube-controllers-5c6f6b67db-q5qb6 1/1 Running 2 4d6h 10.244.36.75 k8s-node1 calico-node-6hgrq 1/1 Running 2 4d6h 192.168.179.102 k8s-master calico-node-jxh4t 1/1 Running 2 4d6h 192.168.179.103 k8s-node1 calico-node-xjklb 1/1 Running 3 4d6h 192.168.179.104 k8s-node2

部署 Dashboard

[root@k8s-master ~]# wget ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard type: NodePort 加上这一行就行了

[root@k8s-master ~]# kubectl apply -f recommended.yaml [root@k8s-master ~]# kubectl get pods -n kubernetes-dashboardNAME READY STATUS RESTARTS AGEdashboard-metrics-scraper-7b59f7d4df-5tzgb 1/1 Running 0 56skubernetes-dashboard-5dbf55bd9d-tgt7b 1/1 Running 0 57s[root@k8s-master ~]# kubectl get svc -n kubernetes-dashboardNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEdashboard-metrics-scraper ClusterIP 10.108.138.194 8000/TCP 64skubernetes-dashboard NodePort 10.106.187.194 443:31383/TCP 65s

这里暴露的是443表示使用account并绑定默认cluster-admin管理员集群角色:

创建用户

[root@k8s-master ~]# kubectl create serviceaccount dashboard-admin -n kube-systemserviceaccount/dashboard-admin created

用户授权

[root@k8s-master ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-adminclusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created

获取用户Token

[root@k8s-master ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')Name: dashboard-admin-token-spfnpNamespace: kube-systemLabels: Annotations: kubernetes.io/service-account.name: dashboard-admin kubernetes.io/service-account.uid: 8e757c86-13af-47fa-8d69-a4d0805d0152Type: kubernetes.io/service-account-tokenData====ca.crt: 1066 bytesnamespace: 11 bytestoken: eyJhbGciOiJSUzI1NiIsImtpZCI6InR0cTRHNDNQUGFMeUZ5Rnp1azZnSUEyRVU0WEY1dWdEMEYwd056ZnNkWWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tc3BmbnAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOGU3NTdjODYtMTNhZi00N2ZhLThkNjktYTRkMDgwNWQwMTUyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.zbOZ4-5UKqllErK1HLZ75srq6zeBzWWNtmz5LTIS0HES-Ih-HZbyGRJxqoW7-T692DW2J-LvRIZH-RrCw-V-wWT435KR-fku6X6YR6tTSzaUIYB3eh3UDjrgQlHriy1M752YwoCpXBi0k3sHAvzGPDJFupeihum2Dr3ZCvUqtpKeSx9zEoWEXWKyVyux4Wr7zbDYWGT-fe2DEAikosKt_70xPM3igexUT67ljH7DdITWzdcEFqB78NVfWGzSlLX6zddvQu2O17NLL_ea-yaxcv6rSMyYgYShRoPwmY55HHsP81dWuoIosBKml-TYbXAQXIcruKvU0vRS71KzN9yAyQ

使用输出的token登录Dashboard。

安装 Kuboard

​​apply -f apply -f Kuboard 运行状态:

[root@k8s-master ~]# kubectl get pods -l k8s.kuboard-/name=kuboard -n kube-systemNAME READY STATUS RESTARTS AGEkuboard-74c645f5df-l7rmf 1/1 Running 1 46h

获取Token

拥有的权限

此Token拥有 ClusterAdmin 的权限,可以执行所有操作

执行命令

# 如果您参考 kuboard- 提供的文档安装 Kuberenetes,可在第一个 Master 节点上执行此命令echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)

输出

取输出信息中 token 字段

eyJhbGciOiJSUzI1NiIsImtpZCI6InR0cTRHNDNQUGFMeUZ5Rnp1azZnSUEyRVU0WEY1dWdEMEYwd056ZnNkWWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tcGNzbGsiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMmRlODY2ZjktZDUwZC00YzA3LTliZTctMTNkODRmZWJmYWRjIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.WvJ4NUbSw1FVFpltpD5T_LQVnJwL8XZbG2HCVPOlVN4cKD_2HLSBEvGl0rZ5ydqitQqds-o-6bjvbWOhKapMQTTHsI7-YeX9N2bjcAd4DCWo_TwR6TJ316yY1F6N94eQHF_Cjok3uOxHayE5banYQXKmsPrrUONbjBoCfU4kFIvRcam0y77QGNtNXUK4nHd0mb69IDNFZIX_42YQCUb2SH9_GNf-7EVpZniKwgGLwNLzbFqQPt7SrB4vLNPTXWWqLl-6SBg5p5RTI1n73ohBA5XURZXU7nmkh_T_jwKqGf9pFfPNPLe-VbsS7geearWrdq0KGgl-aTiTGKmAuGhxPQ

访问Kuboard

您可以通过NodePort访问 Kuboard

Kuboard Service 使用了 NodePort 的方式暴露服务,NodePort 为 32567;您可以按如下方式访问 Kuboard。

http://任意一个Worker节点的IP地址:32567/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Keepalived 配置详解与主备模式
下一篇:Shell for语句实战案例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~