搭建 Docker+Kubernetes 环境,然后部署 Spring 微服务,最后开放对外访问。
搭建 Docker+Kubernetes 环境,然后部署微服务,最后开放对外访问。
由于网络问题,可能下载安装过程中会失败,耐心多安装几次就 OK 了。
安装一定要有耐心!!!安装一定要有耐心!!!安装一定要有耐心!!!
环境Centos:7.5
Docker:19.03
Kubernetes:1.1.18
准备两台 CentOS 机器,这里为了测试,只准备两台,1 台做 Master,1 台做 Worker。
安装 Docker 使用脚本安装 Docker 使用 root 登录 Centos 确保 yum 包更新到最新yum update
执行 Docker 安装脚本
curl -fsSL https://get.docker.com -o get-docker.shsh get-docker.sh
执行这个脚本会添加 docker.repo
源并安装 Docker。
systemctl start dockersystemctl enable docker
至此 Docker 在 Centos 系统的安装已完成。
配置镜像加速器鉴于国内网络问题,拉取 Docker 镜像十分缓慢,我们需要配置加速器来提速。
增加配置:
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://847pb1vj.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2"}
生效配置、重启 Docker:
systemctl daemon-reloadsystemctl restart dockersystemctl enable docker
关闭防火墙
systemctl stop firewalld # 关闭服务systemctl disable firewalld # 禁用服务
禁用 SELinux
修改/etc/selinux/config
,设置SELINUX=disabled
,重启机器。
swapoff -avim /etc/sysconfig/kubelet
修改为:KUBELETEXTRAARGS="--fail-swap-on=false"
安装 Kubernetes安装 kubelet、kubeadm、kubectl、dashboard、添加 woker。
添加源由于国内网络原因,官方文档中的地址不可用,本文替换为阿里云镜像地址:
cat > kubecfg.crt[root@ecs-babc-0004 .kube]# grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key[root@ecs-babc-0004 .kube]# openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
第三条命令生成证书时会提示输入密码,可以直接两次回车跳过,然后再查看文件列表,看到多了 3 个证书相关文件:
kubecfg.p12
即需要导入客户端机器的证书,将证书拷贝到客户端机器上,导入即可,半支烟的电脑是 MAC,直接在~目录下执行以下命令即可,(xxx.xxx.xxx.xxx,是服务器的外网 ip)
scp root@xxx.xxx.xxx.xxx:/root/.kube/kubecfg.p12 ./
MAC 电脑,下载完 p12 文件,需要双击安装证书。安装证书时输入证书密码即可。
此时我们可以登录面板了, 访问地址: https://{k8s-master-ip}:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
,登录时会提示选择证书,确认后会提示输入当前用户名密码(注意是电脑的用户名密码)。此处的{k8s-master-ip}
是指服务器的外网 ip。
然后会弹出 dashboard 的登录界面:
在服务器上的.kube
目录下执行kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
,获取 Token。
[root@ecs-babc-0004 .kube]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')Name: admin-user-token-9gjgzNamespace: kube-systemLabels: Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: a70bac13-dc07-49d2-9f4d-4296654ad66fType: kubernetes.io/service-account-tokenData====ca.crt: 1025 bytesnamespace: 11 bytestoken: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWRoaGtiIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJiMjBkMTE0My1jZTk0LTQzNzktOWUxNC04ZjgwZjA2ZDg0NzkiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.f6IbPGwIdFZWStzBj8_vmF01oWW5ccaCpPuVQNLSK1pgEqn0kNVK_x0RYSuKEnujObzpQQdFiRYcI6ITHja2PIVc5Nv83VCn5IaLvZdYuGZWUYRw0efJUBMA4J4N8-pRkiw6fYAuWLeGYghLNXL_nDdC_JkG75ASqrr3U1MVaikOcfrEPaI-T_AJ3TMYhI8aFoKiERpumu5W1K6Jl80Am9pWDX0Ywis5SSUP1VYfu-coI48EXSptcaxEyv58PrHUd6t_oMVV9rpqSxrNtMZvMeXqe8Hnl21vR7ls5yTZegYtHXSc3PKvCaIalKhYXAuhogNcIXHaMzvLSbf-DSQkVw
复制该 Token 到登录页,点击登录即可, 主界面如下:
重复执行 安装 Docker
~ 安装 Kubernetes-修改网络配置
的全部操作,初始化一个 Worker 机器。
执行如下命令将 Worker 加入集群:
kubeadm join 192.168.0.237:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:964c7b0c007ce17c979e631da17ad047dfa3bad76e407b6ee76d729ecf3cd9c7
- 注意: 此处的秘钥是初始化 Master 后生成的, 参考前文.
添加完毕后, 在 Master 上查看 Worker 节点状态:
[root@ecs-babc-0004 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONecs-babc-0006 Ready 93s v1.18.0k8s-master Ready master 174m v1.18.0
当然在 Dashboard 也可查看:
至此,在 Centos 上搭建 Docker 和 Kubernetes 已全部完成,步骤较多,只要有耐心,肯定能安装完毕。要知道半支烟在安装的时候,前后经历了十几次的重装系统,几乎崩溃,哈哈。
如果遇到问题也欢迎跟半支烟交流(关于我),感谢你的阅读。
参考文献感谢以下文献作者:
Linux 下安装 Docker
Kubernetes(一) 跟着官方文档从零搭建 K8S
错误链接:
排查 kubelet、kubeadm init 問題
kubernetes 一些报错集合
k8s 报错解决思路
阅读全文: http://gitbook.cn/gitchat/activity/5e800465d442b619d45caf37
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。