k8s--(7)从应用访问pod元数据以及其他资源

一、通过Downward API卷传递本pod的元数据

1、可用的元数据

pod名称

pod IP

pod命名空间

pod运行节点的名称

pod运行所归属的服务账户的名称

每个容器请求的CPU和内存使用量

每个容器可用的CPU和内存限制

pod 的标签

pod 的注解

2、通过环境变量暴露元数据

可以通过kubectl  exec  downward  env查看pod的环境变量

3、通过downwardAPI卷传递元数据

创建一个downwardAPI类型的卷Volumn,将其挂载到容器内

这个最终的结果不是在env里了,而是在文件中

可以到/etc/downward目录下ls查看一下,就能看到各个文件

查看文件内容:

kubectl  exec  downward cat /etc/downward/annotations
key1="value1"
key2="multi\nline\nvalue\n"

注意一个细节:卷定义中引用容器级的元数据,需要指定容器名称

二、与k8s API服务器交互

上面都是暴露pod和容器自身的元数据,怎么知道其他pod或资源的信息呢?通过查k8s API服务器

1、学会使用API服务器

(1)查看集群信息

kubectl cluster-info
Kubernetes master is running at https://ip:8443

尝试连接

curl https://ip:8443 -k
Unauthorized

服务器使用https协议需要授权,-k可以跳过证书验证,但也还是访问不通的

(2)使用kubectl  proxy访问:

kubectl  proxy启动了一个代理服务,接收本机的http请求并转发至API服务器,同时处理身份认证。还可以确保我们直接和API服务器交互,而不是一个中间人

先启动,直接运行

kubectl proxy
Starting to serve on 127.0.0.1:8001

然后

curl localhost:8001

可以看到一些接口url,通过curl这些url可以查看某些具体资源的信息

2、pod内部与API服务器交互

(1)发现API服务器地址,其实pod的环境变量里默认添加了这些,甚至还有DNS入口

env | grep KUBERNETES_SERVICE

甚至直接

curl https://kubernetes

这里也要认证,加上证书和token就可以了,记得Secret里面挂载的路径吗?

ls /var/run/secrets/kubernetes.io/serviceaccount
ca.crt  namespace  token

curl的时候把环境变量配置一下就通了

export CURL_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccout/ca.crt
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
curl -N "Authorization: Bearer $TOKEN" https://kubernetes

namespace也应该在这个目录下获取

NS=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)

(2)同样使用代理:通过ambassador容器

构造一个pod,运行两个容器,一个主容器main,一个ambassador容器

ambassador容器的启动命令就是kubectl  proxy,在main容器中直接curl 8001就可以访问API服务器,因为ambassador可以转发请求

curl  localhost:8001

三、客户端与API服务器交互

官方客户端只有go、python,非官方的有很多,都可以用

java的可以看下GitHub - fabric8io/kubernetes-client: Java client for Kubernetes & OpenShift

使用起来就是new一个client,用client的一些方法去与API服务器交互

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值