kubernetes cloud-provider for aliyun
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes cloud-provider for aliyun相关的知识,希望对你有一定的参考价值。
参考技术ACloudProvider 提供kubernetes与云厂商基础服务的对接能力,由 cloud-controller-manager组件实现(lb,云盘,安全组等等)。
aliyun-cloud-provider这个组件主要是aliyun平台的对接插件,可以让用户在创建k8s LoadBalancer 类型的service的时候自动的为用户创建一个阿里云SLB,同时动态的绑定与解绑SLB后端,并且提供了丰富的配置允许用户自定义生成的LoadBalancer.
其他cloud-provider比如aws可提供elb,ebs,安全组等能力,阿里云这里实现了service_controller和route_controller,所以暂时只提供了对接slb资源,其他资源需要单独插件在cloud-provider上层实现,比如cluster-autoscaler需依赖cloud-provider完成node初始化.
所以cloud-provider的能力仅仅对接云厂商基础服务给kubernetes集群使用,我们使用aliyun-cloud-provider 主要也是对接aliyun ess资源,使用cluster-autoscaler动态/定时伸缩kubernetes node节点。
集群环境:
kubele 启动参数添加--cloud-provider=external --hostname override= instance id--provider id= instance id参数并重启kubelet。格式为 Instance。
以下命令可找到REGION_ID 和INSTANCE_ID
然后重启kubelet kubectl get node 查看hostname是否生效,也可以delete node,重新注册到集群。
cloud-provider需要一定的权限才能访问阿里云,需要为ECS实例创建一些RAM策略,或者直接使用accesskeyid&secret,由于我们容器部署cloud-provider所以这里采用AK。
1.配置aliyun-cloud-provider AK(access key) 权限
创建自定义策略,然后将策略绑定到k8s-cloud-provider用户,创建其AK提供给aliyun-cloud-provider使用,保证只能访问我们授权的资源。或者参考地址: https://github.com/kubernetes/cloud-provider-alibaba-cloud/blob/master/docs/examples/master.policy
创建cloud-config configmap 为cloud-provider提供配置,主要存放AK信息
替换$CA_DATA 为cat /etc/kubernetes/pki/ca.crt|base64 -w 0输出结果或者kubectl config view --flatten=true可查看CA data ,以及将apiserver替换自己kubernetes apiserver的服务器地址. 我们通过configmap 挂载到cloud-provider容器中.
一旦云控制器管理器启动并运行,运行一个示例nginx部署:
然后使用以下类型创建服务:LoadBalancer:
其他SLB相关创建annotation参考: https://github.com/kubernetes/cloud-provider-alibaba-cloud/blob/master/docs/zh/usage.md
cloud-provider注意事项 :
通过cloud-provider动态管理SLB最佳实践:
FAQ:
参考链接:
Kubernetes - Kubernetes部署Kubernetes Dashbaord
阅读本文前可先参考
Kubernetes - Kubernetes详解;安装部署_MinggeQingchun的博客-CSDN博客
https://blog.csdn.net/MinggeQingchun/article/details/126420188
Kubernetes部署Kubernetes Dashbaord
Kubernetes Dashbaord(Kubernetes仪表盘)是Kubernetes集群的基于Web的通用UI,它允许用户管理群集中运行的应用程序并对其进行故障排除,以及管理群集本身
GitHub地址:
GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters
Kubernetes Dashbaord安装参考文章
安装Kubernetes Dashboard | Kuboard
1、下载安装kubernetes dashboard的yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
2、修改下载的recommended.yaml文件 如下
修改kubernetes-dashboard namespace中的svc kubernetes-dashboard 的spec.type为NodePort,便于我们从集群外使用浏览器访问dashboard
service段配置更改如下:(nodePort: 30001可以省略,缺省则为随机端口,服务启动后使用kubectl get svc -n kubernetes-dashboard查看)
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001
3、应用yaml的资源清单
kubectl apply -f recommended.yaml
或者直接一步到位:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
4、查看一下pod是否成功,注意命名空间是在kubernetes-dashboard
kubectl get pod -n kubernetes-dashboard
5、浏览器输入访问
此时报错
需要使用https访问
https://192.168.133.129:30001/
需要输入token,token的生成采用下面的三条固定命令
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/print $1')
即可得到 token
输入token进入,页面如下
以上是关于kubernetes cloud-provider for aliyun的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes——Kubernetes基础+部署Kubernetes集群
Kubernetes——Kubernetes基础+部署Kubernetes集群
Kubernetes - Kubernetes部署Kubernetes Dashbaord