# Kubeadm 如何永久套用 components 參數 ## 更新 ClusterConfiguration `ClusterConfiguration` 的欄位是存在 configmap 中,可使用以下指令修改: ``` $ kubectl edit cm -n kube-system kubeadm-config ``` ## 在 control plane nodes 上的更新 在 `ClusterConfiguration` 的欄位中包含了 control plane 元件的修改 * `extraArgs` :要帶入 control plane 元件的參數, requires updating the list of flags passed to a component container * `extraVolumes` - requires updating the volume mounts for a component container * `SANs` - requires writing new certificates with updated Subject Alternative Names ## 手動新增 `enable-admission-plugins=NodeRestriction,PodNodeSelector` 參數 * apiserver 新增 `enable-admission-plugins=NodeRestriction,PodNodeSelector` 參數 ``` $ kubectl edit cm -n kube-system kubeadm-config ...... apiVersion: v1 data: ClusterConfiguration: | apiServer: extraArgs: - name: enable-admission-plugins value: "NodeRestriction,PodNodeSelector" ...... ```  * 將 configmap 匯出後,使用 kubeadm 套用到 static pod ``` $ kubectl get cm -n kube-system kubeadm-config -o jsonpath={.data.ClusterConfiguration} > config.yaml ``` * 套用設定到 apiserver static pod ``` $ sudo kubeadm init phase control-plane apiserver --config ./config.yaml ``` ## 檢查 apiserver 是否套用 * 確認 apiserver static pod yaml 已套用 ``` $ sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml |grep enable-admission-plugins - --enable-admission-plugins=NodeRestriction,PodNodeSelector ``` * 重啟 kubelet 服務 ``` $ sudo systemctl restart kubelet.service ``` * 確認 apiserver 已套用 ``` $ ps aux|grep kube-apiserver root 436924 10.1 3.5 1656612 428676 ? Ssl 11:58 0:20 kube-apiserver --advertise-address=10.10.7.36 --allow-privileged=true --authorization-mode=Node,RBAC --client-ca-file=/etc/kubernetes/pki/ca.crt --enable-admission-plugins=NodeRestriction,PodNodeSelector ``` ## 修改 controller-manager 參數 * `controller-manager` 新增 `Asia/Taipei` 時區參數 ``` $ kubectl edit cm -n kube-system kubeadm-config ...... controllerManager: extraArgs: ....... extraVolumes: - name: tz-config hostPath: /etc/localtime mountPath: /etc/localtime readOnly: true ``` * 將 configmap 匯出後,使用 kubeadm 套用到 static pod ``` $ kubectl get cm -n kube-system kubeadm-config -o jsonpath={.data.ClusterConfiguration} > config.yaml ``` * 套用設定到 controller-manager static pod ``` $ sudo kubeadm init phase control-plane controller-manager --config ./config.yaml ``` ## 修改 etcd 參數 ``` $ sudo kubeadm init phase etcd local --config ./config.yaml ``` ### 如果是 3 台 master 的架構就需要把 config.yaml 丟到每一台 master 上然後執行 kubeadm 套用 ## 參考 https://ithelp.ithome.com.tw/m/articles/10357962
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.