Golang开发者招聘 @ United Internet
Golang开发者招聘 @ United Internet IONOS凭借其商业应用,是欧洲领先的主机和云应用提供商之一。凭借我们先进的技术,我们每天都能赢得来自许多不同国家的超过800万客户的信任。
您的职责
IONOS PaaS计算团队正在寻找一位积极主动且经验丰富的软件工程师。
PaaS计算团队负责为客户开发和维护托管Kubernetes服务。我们利用Kubernetes Operators来管理IONOS云基础设施,以配置和维护可靠、地理冗余的Kubernetes集群。我们负责企业客户大量节点和集群的生命周期管理,持续更新Kubernetes技术栈以及我们自己的驱动程序,例如云控制器管理器和容器存储接口。
我们的小团队负责服务的整个生命周期:我们构建它、交付它、运行它。我们正在寻找一位成员加入我们的团队,与我们一起努力提供尽可能好的产品。
您将参与的工作:
- 主要使用Golang进行编程(Kubernetes Operators、REST API、库和工具)。
- 设计解决方案,为客户提供新功能。
- 开发、改进和维护完整的工具链(例如Helm Charts、Github Actions、GitOps)。
- 自动化繁琐的任务,特别是平台的自愈机制。
- 在自愈机制不足时,承担待命职责。
我们看重
- 扎实的编程经验,包括编写、审查、测试和部署精心设计的代码。
- 在云环境和Kubernetes方面有丰富的经验。
- 具备生产环境运维和故障排除经验,包括监控、告警和日志分析。
- 熟悉Linux操作系统。
- 具备网络基础知识。
附加信息
- 混合工作模式,可选择居家办公。
- 基于信任的工作时间制度,提供灵活的工作时间。
- 在某些地点提供补贴食堂和各种免费饮品。
- 现代化办公空间,交通十分便利。
- 针对活动和产品的各种员工折扣。
- 员工活动,如夏季和冬季派对以及研讨会。
- 大量的培训和发展机会。
- 各种健康福利,例如体育和健康课程。
更多关于Golang开发者招聘 @ United Internet的实战教程也可以访问 https://www.itying.com/category-94-b0.html
你好 @pkuzak 我想提供帮助。 请查看私信。
更多关于Golang开发者招聘 @ United Internet的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个非常吸引人的Golang技术职位,专注于Kubernetes Operator和云原生基础设施开发。其技术栈和职责与当前云原生领域的主流方向高度契合。
从技术角度来看,这个岗位的核心是使用Golang开发和维护Kubernetes Operator,以实现对大规模Kubernetes集群的生命周期管理。这要求开发者不仅需要精通Golang,还需要深入理解Kubernetes的扩展机制、控制器模式以及云原生生态。
以下是一个简化的Golang代码示例,展示了如何开始构建一个自定义Kubernetes Operator的基本框架,这可能是该团队日常开发工作的一部分:
package main
import (
"context"
"fmt"
"time"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
)
// MyResource 是一个自定义资源类型的示例结构
type MyResource struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MyResourceSpec `json:"spec,omitempty"`
Status MyResourceStatus `json:"status,omitempty"`
}
type MyResourceSpec struct {
DesiredReplicas int32 `json:"desiredReplicas"`
}
type MyResourceStatus struct {
AvailableReplicas int32 `json:"availableReplicas"`
}
// Reconciler 是Operator的核心协调器
type Reconciler struct {
Client *kubernetes.Clientset
}
func (r *Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {
// 1. 通过 req.Name 和 req.Namespace 获取自定义资源
// 2. 根据资源Spec中的期望状态,与实际集群状态进行比较
// 3. 调用云API(如IONOS Cloud)或Kubernetes API进行调谐
// 4. 更新资源Status字段
fmt.Printf("Reconciling resource %s in namespace %s\n", req.Name, req.Namespace)
// 示例:检查并确保某个Deployment的副本数符合期望
// 这里可以集成IONOS Cloud的Go SDK来操作底层基础设施
// 如果需要重新排队处理,可以返回带有Duration的Result
return reconcile.Result{RequeueAfter: 30 * time.Second}, nil
}
func main() {
// 1. 加载Kubernetes配置
cfg, err := config.GetConfig()
if err != nil {
panic(err)
}
// 2. 创建Manager,它是Controller Runtime的核心
mgr, err := manager.New(cfg, manager.Options{
Scheme: runtime.NewScheme(),
Port: 9443,
})
if err != nil {
panic(err)
}
// 3. 创建Kubernetes客户端(用于直接API调用)
kubeClient, err := kubernetes.NewForConfig(cfg)
if err != nil {
panic(err)
}
// 4. 创建并注册Reconciler
reconciler := &Reconciler{
Client: kubeClient,
}
// 5. 使用Controller Builder构建控制器
err = builder.
ControllerManagedBy(mgr).
For(&MyResource{}). // 监视MyResource资源
Complete(reconciler)
if err != nil {
panic(err)
}
// 6. 启动Manager
ctx := signals.SetupSignalHandler()
if err := mgr.Start(ctx); err != nil {
panic(err)
}
}
该岗位提到的“完整工具链开发”通常涉及以下Golang实践:
// 示例:一个用于自动化任务的自愈工具包
package autoscale
import (
"encoding/json"
"net/http"
"time"
)
// HealingController 实现基本的自愈逻辑
type HealingController struct {
MonitoringEndpoint string
CloudClient CloudAPI
}
// CheckAndHeal 定期检查集群状态并执行修复
func (hc *HealingController) CheckAndHeal() error {
// 1. 从监控端点获取指标
resp, err := http.Get(hc.MonitoringEndpoint)
if err != nil {
return err
}
defer resp.Body.Close()
var metrics ClusterMetrics
if err := json.NewDecoder(resp.Body).Decode(&metrics); err != nil {
return err
}
// 2. 根据指标判断健康状态
if metrics.NodeFailureRate > 0.1 {
// 3. 调用云API替换故障节点
if err := hc.CloudClient.ReplaceNode(metrics.UnhealthyNodes[0]); err != nil {
return err
}
}
return nil
}
// 运行自愈循环
func (hc *HealingController) RunHealingLoop(interval time.Duration) {
ticker := time.NewTicker(interval)
for range ticker.C {
if err := hc.CheckAndHeal(); err != nil {
// 记录日志并告警,符合岗位要求的监控告警职责
logErrorToMonitoringSystem(err)
}
}
}
岗位中提到的“云控制器管理器”和“容器存储接口”开发,属于Kubernetes与云平台集成的核心组件,需要深入理解Kubernetes的扩展点。
这个职位对Golang开发者在云原生领域的深度和广度都有较高要求,技术挑战性强,且工作内容涉及从开发到运维的完整生命周期,对于追求技术深度的开发者是一个很好的机会。

