当前位置: 首页 > news >正文

网站推广的分类sem竞价外包公司

网站推广的分类,sem竞价外包公司,天合建设集团网站,在山东省建设监理协会网站在工作中需要对kubernetes进行自定义资源的开发,操作K8s的资源肯定是必不可少的。K8s原生语言是用Go编写的,所以在CRD中使用client-go来操作资源。本次介绍一下使用client-go来操作Deployment。 1. 创建main函数 func main() {homePath : homedir.Home…

在工作中需要对kubernetes进行自定义资源的开发,操作K8s的资源肯定是必不可少的。K8s原生语言是用Go编写的,所以在CRD中使用client-go来操作资源。本次介绍一下使用client-go来操作Deployment。

1. 创建main函数

func main() {homePath := homedir.HomeDir()if homePath == "" {panic("homePath is empty")}kubeConfig := filepath.Join(homePath, ".kube", "config")config, err := clientcmd.BuildConfigFromFlags("", kubeConfig)if err != nil {panic(err)}// use the config to create a clientclientSet, err := kubernetes.NewForConfig(config)if err != nil {panic(err)}dpClient := clientSet.AppsV1().Deployments(corev1.NamespaceDefault)log.Println("start handle deployments...")// 创建一个deploymenterr = createDeployment(dpClient)if err != nil {panic(err)}log.Println("create deployment success")<-time.Tick(time.Minute * 1)// 修改一个deploymenterr = updateDeployment(dpClient)if err != nil {panic(err)}log.Println("update deployment success")<-time.Tick(time.Minute * 1)// 删除一个deploymenterr = deleteDeployment(dpClient)if err != nil {panic(err)}log.Println("delete deployment success")
}

这里创建了一个main函数,首先获取到kubernetes配置文件并创建出clientSet,再使用clientSet创建出来操作deployment的客户端。

随后定义了三个函数,分别是:

创建Deployment:createDeployment

修改Deployment:updateDeployment

删除Deployment:deleteDeployment

2. 创建Deployment

接下来编写createDeployment函数,此函数将在kubernetes集群中生成Deployment

func createDeployment(dpClient v1.DeploymentInterface) error {replicas := int32(3)newDp := appv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: "nginx-deployment",},Spec: appv1.DeploymentSpec{Replicas: &replicas,Selector: &metav1.LabelSelector{MatchLabels: map[string]string{"app": "nginx",},},Template: corev1.PodTemplateSpec{ObjectMeta: metav1.ObjectMeta{// 这里的label要和上面的selector的label一致Labels: map[string]string{"app": "nginx",},},Spec: corev1.PodSpec{Containers: []corev1.Container{{Name:  "nginx",Image: "nginx:1.16",Ports: []corev1.ContainerPort{{ContainerPort: 80,Name:          "http",Protocol:      corev1.ProtocolTCP,},},},},},},},}_, err := dpClient.Create(context.TODO(), &newDp, metav1.CreateOptions{})if err != nil {return err}return nil
}

定义副本数量3个,编写Deployment配置,定义ObjectMeta、Spec、Template各种参数

这里提一句Selector中"app": “nginx” 和 Template中是一样的,因为Deployment是通过标签关连到所属副本中pod的

3. 修改Deployment

在接下来的操作中,将nginx的版本变更一下,来达到修改的目的

func updateDeployment(dpClient v1.DeploymentInterface) error {dp, err := dpClient.Get(context.TODO(), "nginx-deployment", metav1.GetOptions{})if err != nil {return err}dp.Spec.Template.Spec.Containers[0].Image = "nginx:1.17"updateDp, err := dpClient.Update(context.TODO(), dp, metav1.UpdateOptions{})if err != nil {return err}return retry.RetryOnConflict(retry.DefaultRetry, func() error {_, err := dpClient.Update(context.TODO(), updateDp, metav1.UpdateOptions{})return err})
}

此处的操作为现将之前创建好的dp获取到,然后进行nginx镜像版本的变更,随后进行使用客户端进行更新操作

此外还通过retry.RetryOnConflict来解决更新冲突

4. 删除Deployment

func deleteDeployment(dpClient v1.DeploymentInterface) error {deletePolicy := metav1.DeletePropagationForegrounderr := dpClient.Delete(context.TODO(), "nginx-deployment", metav1.DeleteOptions{PropagationPolicy: &deletePolicy,})if err != nil {return err}return nil
}

这里的删除操作定义了删除选项,表示前台级联删除。在这种模式下,删除操作会首先返回删除的资源,然后在后台删除关联的依赖对象。在 Kubernetes API 中,前台级联删除的表现形式是:首先将删除的对象的 metadata.deletionTimestamp 字段设置为当前时间,然后客户端会在此对象的 metadata.finalizers 列表中看到值 foregroundDeletion。在依赖对象被删除后,Kubernetes 垃圾收集器会最后删除这个对象。

5. build

代码编写完成打包成二进制

go build -o ./handle_deployment

此时观察deployment所有流程效果

完整代码地址:https://github.com/xiaowei6688/k8s_go_example/tree/dev/handle_deployment

http://www.tj-hxxt.cn/news/96190.html

相关文章:

  • 甘肃省城乡与住房建设厅网站广告精准推广平台
  • jsp语言做网站优化设计三年级上册答案
  • 林芝网站建设关键词seo公司推荐
  • 怎么用自己主机做网站关键词分词工具
  • 好的淘客网站seo搜索铺文章
  • 无锡工程建设招标网站全媒体广告代理加盟
  • 网站模块设计长沙营销网站建设
  • 优秀的网站有哪些内容seo怎么做优化工作
  • 建设网站的合同广州网站优化排名系统
  • 广州h5设计网站公司在百度平台如何做营销
  • 太原如何做百度的网站小红书搜索关键词排名
  • 上海做设计公司网站湖南seo推广系统
  • vs 2008网站做安装包网站注册信息查询
  • 网站跳出率多少抖音竞价推广怎么做
  • 网站备案阿里云流程手机版谷歌浏览器入口
  • 网站如何启用gzip压缩seo是什么的
  • 入职中企动力一月有感seo公司多少钱
  • 网站没有做适配 怎么办今日新闻 最新消息 大事
  • 轻淘客的轻网站怎么做企业网站类型有哪些
  • 群晖wordpress端口河南郑州网站推广优化外包
  • 定制开发软件税率百度灰色词优化排名
  • 网站做调查需要考虑的内容网站流量监控
  • 做商城网站建设哪家好免费发布信息网网站
  • 做网站算软件行业吗最近几天发生的新闻大事
  • 东莞广告公司东莞网站建设网站提交百度收录
  • 局域网内建网站怎样进行seo优化
  • 北京天通苑网站建设搜索引擎优化的定义是什么
  • 自己做的网站怎么设置关键词推广产品引流的最佳方法
  • 长春网站建设制作宁波网站建设方案推广
  • 网站二维码收费怎么做湖南网站排名