kubernetes cloud-provider for aliyun

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes cloud-provider for aliyun相关的知识,希望对你有一定的参考价值。

参考技术A

CloudProvider 提供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、浏览器输入访问 

http://192.168.133.129:30001/

此时报错

需要使用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

kubernetes学习01—kubernetes介绍

Kubernetes——Kubernetes的介绍和使用 kubeadm方式搭建Kubernetes集群

Kubernetes——Kubernetes资源管理+Kubernetes实战入门