微前端架构如何改变企业的开发模式与效率提升
629
2022-09-27
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
内部访问是通过cluster ip 10.99.50.2,集群内部访问是这个IP,这个可以在任意一个节点都可以访问
[root@k8s-master ~]# curl 10.99.50.2
如果要在集群外部浏览器访问要使用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
部署 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
这里暴露的是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:
使用输出的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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~