在配置kubectl 访问api-server以及安装kube-controller-manager和kube-scheduler 组件之前,需要了解这些组件和Kube-apiserver直接的关系,K8s大部分组件都是通过Kube-apiserver进行管理,需要访问API-server 组件包括kubectl,kube-controller-manager、kube-scheduler、kubelet 、kube-proxy。这些组件访问Kube-apiserver所有都需要生成kubeconfig文件 ,在配置组件之前做个简单总结:
kubectl 访问api-server设置
1)创建admin证书
2)使用kubectl 生产kubeconfig文件
3)cp kubeconfig文件为~/.kube/config
kube-controller-manager 访问api-server设置
1)创建kube-controller-manager证书
2)创建kube-controller-manager.kubeconfig文件
3)创建/usr/lib/systemd/system/kube.controller.manager.service
kube-scheduler访问api-server设置
1)创建kube-scheduler-manager证书
2)创建kube-scheduler.kubeconfig文件
3)创建/usr/lib/systemd/system/kube.scheduler.service
kubelet访问api-server设置
1)创建token
2)创建kubelet-bootstrap.kubeconfig文件
3)创建kubelet 参数文件
4)创建/usr/lib/systemd/system/kubelet.service
kube-proxy访问api-server设置
1)创建kube-proxy证书
2)创建kubelet-porxy.kubeconfig文件
3)创建/usr/lib/systemd/system/kube-proxy.service
4.3 配置kubectl 访问api-server
4.3.1 kubectl 访问API SERVER 使用admin证书
cat > admin-csr.json <
4.3.2 生成kubectl.kubeconfig文件
kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://10.111.104.172:8443 \
--kubeconfig=kubectl.kubeconfig
kubectl config set-credentials admin \
--client-certificate=/opt/kubernetes/ssl/admin.pem \
--client-key=/opt/kubernetes/ssl/admin-key.pem \
--embed-certs=true \
--kubeconfig=kubectl.kubeconfig
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=kubectl.kubeconfig
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
4.3.3 拷贝kubectl.kubeconfig到~/.kube/config
cp ./kubectl.kubeconfig ~/.kube/config
4.3.4 排除的坑
--server=https://10.111.104.172:8443
#一定不能漏写https:否则通过Kube-apiserver 查看8443 就一直time_wait
netstat -an | grep -i 8443
10.111.104.172:8443 10.111.70.155:40534 TIME_WAIT