不屈的醉猫 發表於 2020-1-21 10:35:00

kubernetes之Pod分配到指定Node

<h1 id="简介">简介</h1>
<p>此文主要讲述如何将Pod分配到指定Node节点</p>
<blockquote>
<p><strong>备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。</strong></p>
</blockquote>
<h2 id="给node添加标签">给Node添加标签</h2>
<p>1、查看当前集权中,所有node的标签</p>
<pre><code># kubectl get nodes --show-labels

</code></pre>
<p>输出结果如下:</p>
<pre><code>NAME         STATUS   ROLES    AGE   VERSION   LABELS
k8s-master01   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-master02   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-master03   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node-role.kubernetes.io/master=
k8s-node01   Ready    &lt;none&gt;   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02   Ready    &lt;none&gt;   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
k8s-node03   Ready    &lt;none&gt;   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node03,kubernetes.io/os=linux
k8s-node04   Ready    &lt;none&gt;   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
</code></pre>
<p>2、选择一个node节点,打上<code>labels</code></p>
<pre><code># kubectl label nodes k8s-node04 disktype=ssd
</code></pre>
<p>3、查看node上的标签</p>
<pre><code># kubectl get nodes k8s-node04 --show-labels
</code></pre>
<p>输出如下:</p>
<pre><code>NAME         STATUS   ROLES    AGE   VERSION   LABELS
k8s-node04   Ready    &lt;none&gt;   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
</code></pre>
<p>从上输出结果中看出,<code>k8s-node04</code>节点的<code>labels</code>打上了<code>disktype=ssd</code>标签</p>
<h2 id="创建一个调度到指定node的pod">创建一个调度到指定Node的Pod</h2>
<p>此Pod配置文件描述了具有节点选择器(磁盘类型为ssd)的Pod。 这意味着,将在具有<code>disktype = ssd</code>标签的节点上调度Pod。文件:<code>pod-nginx.yaml</code></p>
<pre><code>apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
    env: test
spec:
containers:
- name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
nodeSelector:
    disktype: ssd
</code></pre>
<p>创建Pod</p>
<pre><code># kubectl apply -f /root/k8s-example/pods/pod-nginx.yaml
</code></pre>
<p>查看Pod详情</p>
<pre><code># kubectl get pods -o wide
</code></pre>
<p>从输出结果看,该Pod已被调度到指定的<code>k8s-node04</code>上</p>
<pre><code>NAME                              READY   STATUS             RESTARTS   AGE    IP                NODE         NOMINATED NODE   READINESS GATES
nginx                               1/1   Running            0          107s   100.88.217.86   k8s-node04   &lt;none&gt;         &lt;none&gt;
</code></pre>
<h2 id="创建一个调度到指定node的pod-1">创建一个调度到指定Node的Pod</h2>
<p>也可以用<code>nodeName</code>选择调度到指定Node节点上。</p>
<pre><code>apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName: k8s-node1
containers:
- name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
</code></pre>
<h1 id="总结">总结</h1>
<p>1、Pod调度到指定Node上有两种方法:</p>
<ul>
<li>node打上labels,通过<code>nodeSelect</code>调度到含有指定<code>lables</code>的Node上</li>
<li>用<code>nodeName</code>指定Node的名称。</li>
</ul><br><br>
来源:https://www.cnblogs.com/mcsiberiawolf/p/12220871.html
頁: [1]
查看完整版本: kubernetes之Pod分配到指定Node