curl 调用api 管理k8s 创建、查看、删除 pod

curl 调用api 管理k8s 创建、查看、删除 pod

生成有admin 权限 key

kubectl create serviceaccount  sa-lswzw
kubectl create clusterrolebinding   sa-lswzw-cluster-admin --clusterrole='cluster-admin' --serviceaccount=default:sa-lswzw

查看生成的key

kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='sa-lswzw')].data.token}"|base64 -d

生成key 环境变量

TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='sa-lswzw')].data.token}"|base64 -d)
echo $TOKEN

创建pod

#vi busybox.yaml

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sleep", "300"]

用curl创建pod

curl -k --header "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/yaml' \
-s -w "状态码是:%{http_code}\n" \
-d "$(cat busybox.yaml)" \
https://k8sAPIIP:6443/api/v1/namespaces/default/pods/

用curl 查看pod

curl --header "Authorization: Bearer $TOKEN" \
--insecure -X GET \
https://k8sAPIIP:6443/api/v1/namespaces/default/pods

用curl 删除pod

curl --header "Authorization: Bearer $TOKEN" \
-s -w "状态码是:%{http_code}\n" \
--insecure -X DELETE \
https://k8sAPIIP:6443/api/v1/namespaces/default/pods/busybox

状态码:

200 Ok
201 Created
202 Accepted

参考:

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/#pod-v1-core

https://www.jianshu.com/p/0a5976ce1ce4

https://www.cnblogs.com/fengjian2016/p/6563938.html

http://docs.kubernetes.org.cn/747.html

https://blog.systemd.cn/2019/%E4%BD%BF%E7%94%A8curl%E6%93%8D%E4%BD%9Ckubenetes_api_server.html

在Java中,要通过Kubernetes (K8s) API 进入Pod中的容器并执行命令,通常需要使用客户端库如kube-client或者kubectl本身提供的API。以下是一个简单的步骤概述: 1. **设置环境**:首先确保你安装了Java、kubernetes客户端库(例如`kubernetes-client`)以及一个支持HTTP请求的工具(如curl或者`http4k`等)。 2. **认证**:你需要获取到访问K8s集群所需的凭据,通常是通过服务账户密钥对(service account key pair),或者配置好`kubectl` 的kubeconfig文件。 3. **创建Kubernetes API客户端**:使用`kubernetes-client` 库创建一个`CoreV1Api` 或者 `BatchV1Api` 的实例,取决于你是想运行一次性任务还是长期运行的任务。 ```java import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.Configuration; import io.kubernetes.client.openapi.apis.CoreV1Api; ``` 4. **创建Pod和Container的引用**:指定你要操作的Pod的名称和容器名。 5. **调用API执行命令**:对于`CoreV1Api`,你可以使用`exec`方法来执行命令。例如,执行`ls`命令: ```java String command = "ls"; ApiClient client = Configuration.defaultClient(); CoreV1Api coreV1Api = new CoreV1Api(client); try { V1ExecActionOptions options = new V1ExecActionOptions() .command(Arrays.asList(command)) .containerName("your-container-name") .namespace("your-namespace"); V1ContainerExecResult result = coreV1Api.execNamespacedPodCmd(YOUR_POD_NAME, namespace, null, null, options, null); // process the result, usually a stream of output } catch (Exception e) { e.printStackTrace(); } ``` 6. **处理响应**:根据API返回的结果(可能是标准输出流)来处理命令的执行结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值