k8s部署微服务应用一路的总结

 

目录

安装k8s集群

安装JFrog Container Registry

k8s 中使用token 完成私有容器镜像仓库的鉴权

程序部署

参见


安装k8s集群

首先学习k8s  ,我们手里面得有集群,关于集群的搭建,其实一直卡了我很久,不说高可用集群,就连单机的集群,也是云里雾里,虽说知道都需要安装哪些模块,模块的作用是什么,但是真正参照视频教程里面的安装思路,有会遇到各种坑,最终因为不知道为什么,而安装失败,痛定思痛,我找到了k8s 中文社区的一篇文章,参照该文档,加上自己的总结,成功部署了k8s 到本地的开发环境的最小生态。原文地址连接如下:https://www.kubernetes.org.cn/5650.html

但是在安装中需要有几点修改,

第一点是给各个master和node指定hostname

hostnamectl set-hostname "master"
hostnamectl set-hostname "node1"
hostnamectl set-hostname "node2"

之后配置hosts

vim /etc/hosts
master 192.168.99.101
node1 192.168.99.102
node2 192.168.99.103

 第二点设置时区 和同步时间

yum install ntp -y
sudo timedatectl set-timezone 'Asia/Shanghai'
ntpdate 0.asia.pool.ntp.org

第三点创建 ./kubeadm-config.yaml 的时候出现了问题,导致我们在部署pod 的时候,失败,查看pkubectl describe  pod podname  发现对应节点间网络不通畅,我的解决办法是使用init 直接追加参数的方式:

kubeadm init --kubernetes-version=1.15.1 \
--apiserver-advertise-address=192.168.99.101 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

第四点是当我们创建的pod  我们想要使用 nodePort service 时导致计时所有的node都监听了指定的端口,但是只有pod的真实宿主机能够提供对外访问的能力,解决办法是给master 和node 的各个docker添加路由功能

vim /usr/lib/systemd/system/docker.service

添加

ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

当我们使用dashboard的时候需要我们输入token使用该命令获取

kubectl  -n kube-system describe $(kubectl  -n kube-system get secret -n kube-system -o name |grep namespace) | grep token

到此为止我们的k8s 集群应该已经能够成功运行pod了。

剩下的工作时就使用dockerFile 创建镜像,推送到我们的私有镜像容器仓库,但是我们还没所以进行docekr容器上安装,我使用的是 JFrog container registry

安装JFrog Container Registry

mkdir -p /etc/artifactory/var/etc/
cd /etc/artifactory/var/etc/
touch ./system.yaml
chown -R 1030:1030 /etc/artifactory/var
chmod -R 777 /etc/artifactory/var

docker run --name artifactory-jcr -v /etc/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 docker.bintray.io/jfrog/artifactory-jcr:latest

我们就有我们自己的容器镜像仓库了,默认账号密码 admin password

 我们进入ip:8081登录账号密码进行相关设置

k8s部署微服务应用一路的总结_第1张图片

仓库配置好之后我们在使用docker 进行容器镜像的推送之前需要配置到我们的/etc/docker/daemon.json,art.local 配置为我们私有镜像仓库的宿主机ip

 "insecure-registries": [
    "art.local:8081"
  ]

之后进行docker 的重启 

# Restart Docker
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

但是在推送之前我们还需要进行登录鉴权,鉴权成功后才能进行容器镜像的推送

docker login art.local:8081


###会出现让输入用户名密码的选项

之后就可以推送到我们的仓库了

###打包镜像的时候就应该直接指定tag 为我们远端的了
docker image build -t art.local:8081/docker-local/eruka-server:1.0 .
###推送
docker push art.local:8081/docker-local/eruka-server:1.0

k8s 中使用token 完成私有容器镜像仓库的鉴权

 关于打包和部署的话,我已经完成了spring cloud 基本服务组件的打包进行  service部署文件  应用部署文件,请大家参阅,但是有一个地方需要明确提出来,就是我们k8s 的docker如何进行自动鉴权去私有镜像仓库拉去呢?那就需要我们提前给让容器知道我们的username 和password  然后返回我们token 供我们使用具体命令如下

kubectl create secret docker-registry [token-name] --docker-server=[私有镜像地址] --docker-username=admin --docker-password=[password] --docker-email=[[email protected]]

生成之后直接在部署文件中使用

imagePullSecrets: 
      - name: domain.key

程序部署

关于服务的部署,参见weifuwu的git 仓库,值得说的是使用eruake-server 时的解决方案,使用

StatefulSet  的handless 以及默认的dns创建机制解决了各个eruake server 之间的网络获取

参见

https://gitee.com/weijinhao/weifuwu  具体使用dockerFile 和service.yaml  及各种application.yaml

https://gitee.com/weijinhao/k8s-deployment-source-code    各种相关概念的使用样例文件

 https://gitee.com/weijinhao/doc  里面的k8s 文档有各种相关概念的说明以及样例使用  他是和

 k8s-deployment-source-code配到使用的 

https://www.kubernetes.org.cn/5650.html  k8s 集群的安装详解文档

 

 

你可能感兴趣的:(spring,cloud,备忘录,k8s,云部署,java,k8s部署)