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 <none> 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 <none> 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 <none> 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 <none> 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 <none> 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 <none> <none>
</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]