# 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up