---
# System prepended metadata

title: Nomos 常見的Q&A

---

# Nomos 常見的Q&A

## Platform
Nomos目前支援兩種串接k8s方式：

1. create platform

(2023/3) 目前僅支援ubuntu 18.04版本作業系統

[enable HA mode]如果勾選，下方的master必須要有三台主機設定

[deploy worker on master node]預設是勾選的，代表下方的master node節點上，也會安裝worker角色的相關功能。

2. add platform

串接現有的k8s platform時，vendor請先選擇private。

server欄位是https://(vm ip):6443 (請記得6443 port可允許Nomos IP可以連線)

Auth Type請選擇Client Certificate

請參考k8s config，取得certificate-authority-data、client-certificate-data以及client-key-data。

請透過kubectl get svc -n monitoring 取得prometheus service port。


## 設定NFS storage串接
Nomos支援kubernetes StorageClass，因此，k8s要串接storage之前，要確認該Storage有csi driver可以安裝。下面以NFS方式為例：

在k8s內，安裝nfs csi driver：

sudo apt update && apt install nfs-common -y

git clone https://github.com/kubernetes-csi/csi-driver-nfs.git
cd csi-driver-nfs/
sudo ./deploy/install-driver.sh master local

安裝好csi driver之後，回到Nomos Portal，新增StorageClass，以下為重要欄位必填資訊：

driver : nfs.csi.k8s.io
parameter(volumeAttributes) : 
server : xxx.xxx.xx.xx
share : /shared/path/example(輸入正確路徑)

新增完畢之後，即可建立PersistentVolumeClaims。

## Horizontal Pod AutoScaling新增之後為什麼不會自動擴展？
Metric Server是提供即時數據的服務，如果沒有安裝啟動的話，HPA是無法得知即時監控數據，HPA就無法做出判斷。要安裝啟動的話，可以參考官方說明，
https://github.com/kubernetes-sigs/metrics-server


或是執行以下指令安裝。

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

如果metrics server pod無法成功執行，檢查logs紀錄若是看到以下訊息，

```
x509: cannot validate certificate
```

修改metrics server的deployment定義即可。

kubectl edit -n kube-system deployment metrics-server

找到以下區塊，再新增一筆參數設定：(- --kubelet-insecure-tls)

```
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
```

最後檢查HPA是否正確執行：
```
root@node1:~# kubectl get hpa -n ilox8cdemodev
NAME            REFERENCE                         TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
wordpress-hap   Deployment/wordpress-deployment   1%/75%    1         3         1          8m4s
```
## 如果直接在k8s cmd部署yaml檔，我可以讓Nomos呈現相關resource嗎？
可以，請在yaml檔內，加入相關label與annotation設定

labels:
  geminiopencloud.com/type: native_resource
  geminiopencloud.com/request-id: <uuid>
  geminiopencloud.com/platform: <platform_name>
  geminiopencloud.com/user: <user_id>
  geminiopencloud.com/project: "<project_id>"
annotations:
  geminiopencloud.com/user: '{"id": "<user_id>", "username": "<username>", "display_name": "<user_display_name>", "email": "<user_email>"}'
  geminiopencloud.com/project: '{"id": <project_id>, "name": "<project_name>"}'
    
上述的參數中，uuid請利用uuid 產生器隨機產生即可。
其他的參數如果不知道如何填寫，可以透過Nomos Portal任意建立一組簡單的resource，比如nginx pod，即可參考。
    
## 如果您想試試看，可以參考wordpress範例。

reference to : josedom24的github   

https://github.com/josedom24/kubernetes/tree/master/ejemplos/wordpress2