API server


API 서버에서는 아래의 내용은 꼭 알아야 한다. 

 - "apiserver-advertise-address" 와  "apiserver-bind-port" ( 값이 지정되지 않는경우 Default 값으로, 기본 Interface IP 와 6443 Port 로 설정된다. )

 - "service-cluster-ip-range" 는 service 에서 사용한 ip range 값이다. 

 - etcd-servers address 와 TLS 구성은 "etcd-cafile, etcd-certfile, etcd-keyfile" 이 필수, External etcd 가 연결되어 있지않으면,  via host network 의 local etcd 가 사용됨

 - Cloud Provider 를 지정하면 --cloud-provider 가 --cloud-config path 와함께 구성이 된다. 이 기능은 alpha 이며, 곧 삭제될 기능이다. 

 - kubeadm 이 "--feature-gates=HighAvailability" 을 호출하면 "--endpoint-reconciler-type=lease" flag 가 세팅되며, Internal API server VIP 의 "automatic reconcilaiton" 을 활성화

 - kubeadm 이 "--feature-gates=DynamicKubeletConfig" 을 호출하면, kube-apiserver 의 --feature-gates=DynamicKubeletConfig=true flag 가 activated 


Default 로 설정되는 flags

 - API 에 대한 안전하지 않은 연걸 방지 "--insecure-port=0"

 - BootstrapTokenAuthenticator authentication module 활성화 "--enable-bootstrap-token-auth=true"

 - "--allow-privileged" to "true" kube-proxy 에서 사용됨

 - "--client-ca-file" to "ca.crt"

 - "--tls-cert-file" to "apiserver.crt"

 - "--tls-private-key-file" to "apiserver.key"

 - "--kubelet-client-certificate" to "apiserver-kubelet-client.crt"

 - "--kubelet-client-key" to "apiserver-kubelet-client.key"

 - "--service-account-key-file" to "sa.pub"

 - "--requestheader-client-ca-file" to "front-proxy-ca.crt"

 - "--admission-control" to

ㄴ "Initializers" to enable "Dynamic Admission Control"

ㄴ "NamespaceLifecycle" 을 사용해서 "system reserved namespaces etc" 의 삭제를 방지

ㄴ "LimitRanger", "ResourceQuota" 를 사용하여서 namespaces 에 대한 제한적용

ㄴ "Serviceaccount" 를 통해서 service account 자동화

ㄴ "PersistentVolumeLabel" 은 Cloud Provider 가 정의한 PersistentVolumes 에 region 혹은 zone 에 대한 label 을 정의한다. 이 기능은 kubeadm 에서 더이상 사용되지 않으며, 이후 버전에서 제거될 기능이다. gce 나 aws 로 선택하지 않는경우 kubeadm 에서 구성되지 않는다. 

ㄴ "DefaultStorageClass" 는 PersistentVolumeClaim 의 Default storage class 를 정의한다. 

ㄴ "DefaultTolerationSeconds" 는  forgiveness toleration for pods to tolerate the taints 기능을 하는 값에 대한 설정값 / Default 는 5초

ㄴ "NodeRestriction" 은 kubelet 이 수정할수있는 Pod 및 Node object 를 제한

 - "--kubelet-preferred-address-types" to "InternalIP,ExternalIP,Hostname" kubelet log 및 apiserver -> kubelet 통신을 node 의 hostname이 확인되지 않는 환경에서 작동하게 함

 - requestheader-client-ca-file tofront-proxy-ca.crt

 - proxy-client-cert-file to front-proxy-client.crt

 - proxy-client-key-file to front-proxy-client.key

 - "--requestheader-username-headers=X-Remote-User, --requestheader-group-headers=X-Remote-Group, --requestheader-extra-headers-prefix=X-Remote-Extra-, --requestheader-allowed-names=front-proxy-client" Front proxy 통신이 안전하게 보장됨



+ Recent posts