sextant 提供了可以通过PXE全自动化安装初始化一个CoreOS+kubernetes集群。
bootstrapper需要运行在一台服务器上(以下称bootstrapper server),满足以下的几个要求:
- 待初始化的kubernetes机器需要和bootstrapper server保持网络连通
- bootstrapper server是一台安装有docker daemon(1.11以上版本)的Linux服务器
- 拥有bootstrapper server的root权限
- 配置bootstrapper server的/etc/hosts文件,增加hostname的解析:
127.0.0.1 bootstrapper
在能访问互联网的一台机器上完成下面的准备环境,配置,创建Docker镜像的步骤
- 注:如果bootstrapper机器没有互联网访问,可以事先准备好/bsroot目录然后上传到bootstrapper server
获取sextant代码后,根据要初始化的整体集群规划, 编辑cloud-config-server/template/cluster-desc.sample.yaml文件完成配置 然后下载bootstrapper用到的文件到/bsroot目录下
go get -u -d github.com/k8sp/sextant/...
cd $GOPATH/src/github.com/k8sp/sextant
vim cloud-config-server/template/cluster-desc.sample.yaml
./bsroot.sh cloud-config-server/template/cluster-desc.sample.yaml
如果上述步骤是在bootstrapper服务器上完成的,则可以跳过此步骤。
- 手动打包./bsroot目录:
tar czf bsroot.tar.gz ./bsroot
- 将bsroot.tar.gz上传到你的bootstrapper机器上(使用scp或ftp等工具)
- 在bootstrapper机器上解压bsroot.tar.gz到/目录
ssh root@bootstrapper
cd /bsroot
./start_bootstrapper_container.sh /bsroot
只需要设置kubernetes节点通过PXE网络引导,并开机(和bootstrapper网络联通),就可以自动完成kubernetes和ceph安装
scp root@bootstrapper:/bsroot/setup-kubectl.bash ./
./setup-kubectl.bash
执行下面的命令,观察返回结果是否正常,判断是否已经成客户端的正确配置:
bootstrapper ~ # ./kubectl get nodes
NAME STATUS AGE
08-00-27-4a-2d-a1 Ready,SchedulingDisabled 1m
在集群安装完成之后,可以使用下面的命令获得admin keyring作为后续使用
etcdctl --endpoints http://08-00-27-ef-d2-12:2379 get /ceph-config/ceph/adminKeyring
比如,需要使用cephFS mount目录:
mount -t ceph 192.168.8.112:/ /ceph -o name=admin,secret=[your secret]
1.修改certgen.go中openssl.cnf的配置
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = 10.10.10.201
IP.1 = 10.100.0.1
- 根据openssl.cnf,重新生成api-server.pem等文件:https://coreos.com/kubernetes/docs/latest/openssl.html
- 重启master的相关进程,包括api-server, controller-manager, scheduler, kube-proxy
- 使用kubectl delete secret删除kube-system/default namespace下的default secret
- 重新提交失败的service