KubernetesでMaster Nodeにデプロイできるように設定する

KubernetesのTaintsの設定をNoneにすることでデプロイができるようになる

Nodeの名前を確認する

$  kubectl get node
NAME             STATUS   ROLES           AGE    VERSION
k8s-pri-master   Ready    <none>          7h1m   v1.25.5
k8s-pub-master   Ready    control-plane   22h    v1.25.5
今回、k8s-pub-masterのMasterに対して、デプロイができるように設定を行う。

Taintsの設定値の確認

Taintsが設定されている場合は以下のように表示される

$ kubectl describe node k8s-pub-master
(省略)
CreationTimestamp:  Mon, 06 Nov 2023 10:21:54 +0000
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

Taintsの設定を外す

$ kubectl taint nodes k8s-pub-master node-role.kubernetes.io/control-plane:NoSchedule-
node/k8s-pub-master untainted


$ kubectl describe node k8s-pub-master
(省略)
CreationTimestamp:  Mon, 06 Nov 2023 10:21:54 +0000
Taints:             <none>

Master nodeにデプロイできることを確認

nodeSelectorでMaster nodeを指定してデプロイができることを確認する。

以下のyamlファイル、nginx-deployment_masternode.yamlを作成する。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
      nodeName: k8s-pub-master

デプロイを行い、Master nodeにデプロイされたことを確認する

$ kubectl apply -f ./nginx-deployment_masternode.yaml
deployment.apps/nginx-deployment created

$ kubectl get pod -o wide
NAME                               READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
nginx-deployment-79548f7fb-hbs7d   1/1     Running   0          81s   182.16.9.4   k8s-pub-master   <none>           <none>