k8s:将pod部署到指定的node运行(pod&node选择部署策略)

k8s:将pod部署到指定的node运行(pod&node选择部署策略),第1张

查看所有节点labels:

添加labels:

修改yaml配置文件

添加nodeSelector配置,样式为[label.key]: [label.value]

修改后重启服务

参考文章: https://blog.csdn.net/lzy_zhi_yuan/article/details/106913428

nodeSelector配置相对简单,k8s提供了另外一个pod调度配置: nodeAffinity(节点亲和) ,相对于nodeSelector的简单匹配他拥有更多更加个性化的配置。

这段配置表示:该pod可以被调度到标签key为 "deploy.type" ,值为 "yztssjdxt-test" 或 "yztssjdxt" 的节点。

通过使用的语句不同,调度分成软策略(soft)和硬策略(hard) ,在软策略下,如果没有满足调度条件的节点,pod会忽略这条规则,继续完成调度。而硬策略下,pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试。

DuringScheduling和IgnoredDuringExecution组合生成目前主要的nodeaffinity策略

软硬策略可以组合使用 ,如下面这段配置中pod必须被调度到标签为 "deploy.type=yztssjdxt-test" 的节点。另外,在满足该条件的节点中,优先使用具有 "server=oms" 标签的节点。

nodeAffinity中nodeSelector字段下,节点满足任何一个条件即可;但更下一级matchExpressions,节点必须同时满足所有条件才能运行pod 。

如下面这段配置需要deploy.type=yztssjdxt-test、server=oms同时满足

而这段配置只需要deploy.type=yztssjdxt-test、deploy.type1=yztssjdxt满足一个即可

operator字段 :pod与node的匹配逻辑,可选的 *** 作符有:(我只测过in、notin)

如下方这段配置,pod将不会调度到deploy.type=yztssjdxt-test的node上

一、项目添加pod管理->步骤如下:

1、打开终端 cd 到项目的, 然后在终端执行: pod init ,项目文件夹中多处一个Podfile文件

2、在终端使用vim打开, 执行: vim Podfile ,编辑内容如下:

3、然后直接执行: pod install 安装pod。安装成功之后是这样的:

项目是这样的:

4、打开项目

使用pod管理的项目, 只能通过后缀为 xcworkspace 的文件打开,就是上图红框框的那个文件。打开之后,项目就是这样子的:

完成上面步骤,即可添加cocoapods项目管理。

二、创建本地私有库的流程:有两种方式创建本地私有库

第一种方式:手动修改podspec文件完成创建

1、创建项目(项目名称:MobileFrame)  

2、 创建私有库文件夹  

3、 创建Classes文件夹(默认指定文件夹 spec文件默认)

4、 在Classes文件夹下创建Person.h Person.m 文件  

5、在Private目录下进行 git 初始化

    1、git init

    2、git add .

    3、git commit-m"创建Person.h Person.m文件"

6、在Private目录下查看

7、在Private目录下 创建spec配置文件

//1.创建spec文件 (PrivateLib 私有库指定的文件)

pod spec create PrivateLib 

//2.创建完私有库后编辑spec文件  以下几个地方修改

s.summary      = "PrivateLib."    //简短的描述

s.description  = "PrivateLib本地私有库测试"  //长描述长度大于s.summary(规范以避免不必要的问题出现)

//许可证改成MIT

s.license      = "MIT" 

//Git后面的URL去掉因为是本地私有库并没有在远程地址上

s.source      = { :git =>"", :tag =>"#{s.version}" } 

//之前创建的Classes文件夹与Spec文件中的对应  会匹配Classes下所有目录文件的.h .m 文件

s.source_files  = "Classes", "Classes/**/*.{h,m}"

如下图: 

8、在MobileFrame目录下 pod 初始化

    pod init //创建podFile 初始化pod

9、 编辑podFile文件  

因为是本地私有库 要指定地址(地址是在当前xxx.codeproj相对的路径如下图) 

10、在MobileFrame目录下 pod install安装本地私有库

    pod install

如果以上 *** 作都正确 pod install 后项目中没有出现Person.h Person.m 那么请重启Xcode

第一种方式:自动完成对podspec文件的创建

1、使用命令创建私有库,并且按照提示回答几个问题:

    pod lib createLTFramework

私有库使用什么语言?

私有库中是否需要包含一个demo工程?

私有库是否需要包含一个测试框架?

私有库的类前缀是什么?

2、私有库工程已经创建好了,并且会自动打开

3、在私有库中加入一个分类文件,重新执行命令

    pod install

4、在MobileFrame的podfile文件中添加”LTFramework”私有库路径,再重新执行命令安装私有库:

    pod install

5、在MobileFrame中成功依赖私有库

6、使用私有库中的方法

7、在pod lib create时可能会出现如下的错误:

JerryMBP:~ Jerry.Yao$ pod lib create LTFramework

Cloning `https://github.com/CocoaPods/pod-template.git` into `LTFramework`. 

Configuring LTFramework template. 

/Users/Jerry.Yao/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require': cannot load such file -- colored2 (LoadError) 

    from /Users/Jerry.Yao/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require' 

    from /Users/Jerry.Yao/Desktop/Test/LTFramework/setup/TemplateConfigurator.rb:2:in `<top (required)>' 

    from ./configure:5:in `require_relative' 

    from ./configure:5:in `block in <main>' 

    from ./configure:4:in `each' 

    from ./configure:4:in `<main>' 

To learn more about the template see `https://github.com/CocoaPods/pod-template.git`. 

To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`.

解决办法是输入如下两条命令行:

1> sudo gem install colored2

2> sudo gem update --system


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11895925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存