博客 > 术业专攻> 云计算> kubernetes> Kubernetes学习笔记-手动搭建k8s-1.10.4之部署kube-apiserver 2019年08月29日 11:24:36
本文档讲解使用 keepalived 和 haproxy 部署一个 3 节点高可用 master 集群的步骤,对应的 LB VIP 为环境变量 ${MASTER_VIP}。
配置之前需要先安装kubelet,flannel等组件,不过前边已经安装,现在直接进入配置。
创建证书签名请求:
$source /opt/k8s/bin/environment.sh
$cat > kubernetes-csr.json <
$ kubectl get svc kubernetes
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 443/TCP 1d
现在还不能进行这样的操作,继续往下配置。
生成证书和私钥:
$cfssl gencert -ca=/etc/kubernetes/cert/ca.pem \
-ca-key=/etc/kubernetes/cert/ca-key.pem \
-config=/etc/kubernetes/cert/ca-config.json \
-profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
$ls kubernetes*pem
将生成的证书和私钥文件拷贝到 master 节点:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/kubernetes/cert/ && sudo chown -R k8s /etc/kubernetes/cert/"
scp kubernetes*.pem k8s@${node_ip}:/etc/kubernetes/cert/
done
EOF
$source /opt/k8s/bin/environment.sh
$cat > encryption-config.yaml <
将加密配置文件拷贝到 master 节点的 /etc/kubernetes 目录下:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp encryption-config.yaml root@${node_ip}:/etc/kubernetes/
done
EOF
$source /opt/k8s/bin/environment.sh
$cat > kube-apiserver.service.template <
替换模板文件中的变量,为各节点创建 systemd unit 文件:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for (( i=0; i < 3; i++ ))
do
sed -e "s/##NODE_NAME##/${NODE_NAMES[i]}/" -e "s/##NODE_IP##/${NODE_IPS[i]}/" kube-apiserver.service.template > kube-apiserver-${NODE_IPS[i]}.service
done
EOF
分发生成的 systemd unit 文件:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /var/log/kubernetes && chown -R k8s /var/log/kubernetes"
scp kube-apiserver-${node_ip}.service root@${node_ip}:/etc/systemd/system/kube-apiserver.service
done
EOF
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl daemon-reload && systemctl enable kube-apiserver && systemctl start kube-apiserver"
done
EOF
检查 kube-apiserver 运行状态:
cat > magic.sh << "EOF"
#!/bin/bash
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl status kube-apiserver |grep 'Active:'"
done
EOF
输出如下内容:
$bash magic.sh
>>> 192.168.106.3
Active: active (running) since Fri 2018-11-23 18:13:44 CST; 6h ago
>>> 192.168.106.4
Active: active (running) since Fri 2018-11-23 18:13:51 CST; 6h ago
>>> 192.168.106.5
Active: active (running) since Fri 2018-11-23 18:13:57 CST; 6h ago
则正常,如果没有,检查日志:
journalctl -xu kube-apiserver
$source /opt/k8s/bin/environment.sh
$ETCDCTL_API=3 etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/etcd/cert/etcd.pem \
--key=/etc/etcd/cert/etcd-key.pem \
get /registry/ --prefix --keys-only
$kubectl cluster-info
Kubernetes master is running at https://192.168.106.110:8443
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$kubectl get all --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.254.0.1 443/TCP 6h
$kubectl get componentstatuses
NAME STATUS MESSAGE ERROR
controller-manager Unhealthy Get http://127.0.0.1:10252/healthz: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
etcd-1 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}
scheduler Healthy ok
注意:
$sudo netstat -lnpt|grep kube
tcp 0 0 192.168.106.3:6443 0.0.0.0:* LISTEN 14318/kube-apiserve
在执行 kubectl exec、run、logs 等命令时,apiserver 会转发到 kubelet。这里定义 RBAC 规则,授权 apiserver 调用 kubelet API。
$ kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes
1,关于证书域名最后字符不能是 . 的问题,实际和 Go 的版本有关,1.9 不支持这种类型的证书:https://github.com/kubernetes/ingress-nginx/issues/2188
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: