go - 如何应用 Kubernetes 工作负载
问题描述
我正在编写一个将在 kubernetes 集群中运行的 Go 程序。
我希望程序使用 yaml(json 格式的 yaml)应用 kubernetes 工作负载
import (
"encoding/json"
"fmt"
corev1 "k8s.io/api/core/v1"
)
var (
workload = `{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "sleep",
},
"spec": {
"containers": [
{
"name": "sleep2",
"image": "tutum/curl",
"command": [
"/bin/sleep",
"infinity"
],
"imagePullPolicy": "Always",
"env": [
{
"name": "ENV_VAR",
"value": "i/love/sleeping"
}
]
}
]
}
}`
)
func ApplyWorkload(){
pod := corev1.Pod{}
if err := json.Unmarshal(workload, &pod); err != nil {
fmt.Errorf("%v", err)
}
// apply pod here
}
如何在 Go 中应用工作负载?
如果我的工作负载是部署,我应该为每个可能的工作负载运行一个 switch-case 怎么办?
解决方案
您需要 Kubernetesclient-go
来创建pod
或deployment
.
进口"k8s.io/client-go/kubernetes"
clientset, err := kubernetes.NewForConfig(cfg) // cfg is the *config
// .... ... .. create deployment
result, err := clientset.AppsV1().Deployments(namespaceName).Create(deployment) // deployment object
// ... .... ... create pod
result, err := clientset.CoreV1().Pods(namespaceName).Create(Pod) // Pod object
推荐阅读
- keras - 我可以动态更改 Keras 中神经网络的学习率吗?
- azure-ad-b2c - 使用 Graph API 在 Azure AD B2C 中创建帐户时如何强制电子邮件地址验证?
- highcharts - Highcharts:具有不同比例范围的堆积条形图
- wordpress - Timber+Twig:检查模板类型
- c# - 对 SSIS 的卷曲请求
- javascript - 如何在 jQuery 函数的回调中引用元素?
- html - 无法使用来自 Google Chrome 扩展程序 background.js 的 HTML5 FileSystem Api
- android - 为什么我的三星 Galaxy S10 Plus 和 Android 10 模拟器上没有显示此复选框?
- node.js - Heroku 错误找不到'm3u8stream/lib/parse-time'
- c# - 会话:无法在 ASP.NET Core 3.0 C# 中将 int 转换为 byte[]