银企云K8s部署流程金蝶软件(中国)有限公司2020年10月1/161.环境准备服务器配置:操作系统CentOS7使用uname–r指令查看:3.10.0-693.el7.x86_64最低要求:CPU四核2GHz以上,16G内存,200G存储空间、100M带宽,可单机部署,群集部署至少3台服务器。银企云K8s一键部署工具,如果服务器网络条件不好的话,建议下载k8s-ebgcloud.tar.gz镜像包,先自行安装docker,然后下载镜像包,解压使用tar–xvf命令,通过dockerload依次导入镜像,最后下载部署工具,完成配置并进行部署。Docker安装版本仅供参考:镜像包tar列表编号tar包名镜像名1weave-kube.tarweaveworks/weave-kube:2.7.02kube-proxy.tark8s.gcr.io/kube-proxy:v1.15.03kube-apiserver.tark8s.gcr.io/kube-apiserver:v1.15.04kube-controller-manager.tark8s.gcr.io/kube-controller-manager:v1.15.05kube-scheduler.tark8s.gcr.io/kube-scheduler:v1.15.06flannel.tarquay.io/coreos/flannel:v0.11.0-amd647coredns.tark8s.gcr.io/coredns:1.3.18kubernetes-dashboard-amd64.tarmirrorgooglecontainers/kubernetes-dashboard-amd64.10.12/169etcd.tark8s.gcr.io/etcd:3.3.1010pause.tark8s.gcr.io/pause:3.1还需要下载一键部署工具包deploy_K8s-v1.15.0.tar.gz,文件目录为:对其中的sh脚本文件进行执行权限的赋值,可以使用chmod777*.sh完成赋权操作。2.部署流程1、只需要在修改base.config里面的固定参数即可。masterip="127.0.0.1"#过滤IP段ip_segment="172.20.1"#ntp用cluster_network="172.20.184.1/24"k8s_version="v1.15.0"root_passwd="root123."hostname="k8s"hostip=(127.0.0.1127.0.0.2127.0.0.3)2、给.sh结尾的脚本赋权限。chmod777*.sh3、然后执行deploy_k8s_master.sh使用root进行启动,sudoshdeploy_k8s_master.sh执行是后台进行,界面可能会出现卡住的状况,这是正常情况,可以查看日志确认脚本是否正在执行。3/164、查看日志setup.log脚本启动后,在根目录会出现setup.log的日志文件,可以使用:catsetup.log对全部内容进行查看或tail–n20setup.log对日志文件最后20行进行查看5、物理机不用说了,要是虚拟机cpu必须最少是2个,切记。6、在deploy_k8s_master.sh执行完成后,通过日志查看是否存在报错,如果没有明显错误警告,接下来使用dockerimages(root权限需要:sudodockerimages)查看当前是否已经下载k8s的镜像:再次执行dockerps查看容器运行情况:最后使用kubectlgetcs确认master节点是否安装成功:7、如果是单机部署,继续执行node_install_k8s.sh使用root进行启动,sudoshnode_install_k8s.sh执行是后台进行,界面可能会出现卡住的状况,这是正常情况,可以查看日志确认脚本是否正在执行。8、查看日志setup.log脚本启动后,在根目录会出现setup.log的日志文件,可以使用:catsetup.log对全部内容进行查看或tail–n20setup.log对日志文件最后20行进行查看9、在node_install_k8s.sh执行完成后,通过日志查看是否存在报错,如果没有4/16明显错误警告,可以使用dockerps再次确认是否增加新的容器(明显会增多),接下来执行kubectlgetnodes,查看节点显示是否为ready:最后验证各组件安装情况。READY都是Running表示成功。kubectlgetpod--all-namespaceskubectlgetsvc--all-namespaces10、部署完后进入到dashboard文件夹部署dashboardcddashboard执行kubectlcreate-f.启动dashboard服务然后查看部署情况以及登录的node节点端口kubectlgetservice--all-namespaces|grepkubernetes-dashboard例如结果:那么你就输入https://nodeIP:32095(启动端口是随机生成的)来登录,其中nodeIP可以通过hosts文件来查看,cat/etc/hosts:以上图为例,部署的节点就是k8s1,因此浏览器直接访问https://172.20.184.79:320955/1611、登录可以通过令牌的方式进行。查看登录时候的tokenkubectl-nkube-systemdescribesecret$(kubectl-nkube-systemgetsecret|grepadmin-user|awk'{print$1}')将token完整拷贝粘贴在登录页面的令牌,就可以进入到k8s部署页面:6/163.银企云容器部署银企云部署增加对容器内部应用JVM内存参数配置,当前可分配的应用组件有boot\facade\manage\receipt,对应的参数列表:参数值默认值(正式环境)参考值(测试环境)BOOT_JVM-Xms1024m–Xmx2048m-Xms512m–Xmx1024mFACADE_JVM-Xms512m–Xmx1024m-Xms256m–Xmx512mMANAGE_JVM-Xms768m-Xmx1536m-Xms512m–Xmx1024mRECEIPT_JVM-Xms512m–Xmx1024m-Xms256m–Xmx512m非特殊情况,请不要对JVM参数进行配置,镜像已配置正式环境默认值。服务端口映射表外部访问端口容器访问端口容器内部端口所属镜像3011280808080dubboadmin_new3011180828082ebg850_new3011368886888ebpatch_new3011080818081ebmanage_new3011480908090ebreceipt_new1、准备工作,银企云数据库搭建、共用组件搭建、镜像导入。2、登录k8s平台,点击右上角的创建:7/163、创建应用,填写镜像信息8/16这里需要填写的配置有:应用名称、镜像名称、内部服务的端口映射、命名空间、CPU与内存分配4、环境变量配置以下为部署ebg850和ebmanage镜像的环境变量和服务端口映射配置用例,仅供参考,具体配置信息以实际为准:ebg850环境变量:ebg850-new镜像:9/16swr.cn-north-1.myhuaweicloud.com/kingdee-ierp/ebg850_new:v1.0.8环境变量:EBBOOT_SERVER_PORT:8083EBFACADE_SERVER_PORT:8082EBMESSAGE_SERVER_PORT:-1DB_HOST:127.0.0.1DB_PORT:3306DB_NAME:ebcDB_USER:kduserDB_PASS:kduserREDIS_HOST:127.0.0.1REDIS_PORT:6379REDIS_INDEX:0REDIS_PASS:kduserZK_HOST:127.0.0.1:2181LOGSTASH_HOST:127.0.0.1:9600TIME_LIMIT:30000TIME_TOLERATE:30000AUTH_EXPIRE:1200CHECK_CA:trueCHECK_TOKEN:trueBOOT_JVM:-Xms512m–Xmx1024mFACADE_JVM:-Xms512m–Xmx1024mEB_DUBBOADMIN_HOST:172.16.10.164EB_DUBBOADMIN_PORT:30112PATCH_URL:http://172.16.10.164:30113MOUDLES:ebdownload,ebboot,ebfacade,ebmessageebg850服务端口:内部端点:ebg850-new.kube-system:8082TCPebg850-new.kube-system:30111TCP_________________________________________________________________ebmanage环境变量:ebmanage-new镜像:swr.cn-north-1.myhuaweicloud.com/kingdee-ierp/ebmanage_new:v1.0.8环境变量:EB_SERVICE_PORT:30111EB_VERIFYCODE_CHECK:falseEB_VERIFYCODE_RANDOM:falseDB_HOST:127.0.0.1DB_PORT:3306DB_NAME:ebc10/16DB_USER:kduserDB_PASS:kduserZK_HOST:127.0.0.1:2181REDIS_HOST:127.0.0.1REDIS_PORT:6379REDIS_INDEX:0REDIS_PASS:kduserLOGSTASH_HOST:127.0.0.1:9600ES_HOST:172.16.10.236ES_PORT:9200ES_USER:elasticES_PASS:changemeEB_SERVICE_HOST:172.16.10.164MANAGE_JVM:-Xms512m–Xmx1024mEB_DUBBOADMIN_HOST:172.16.10.164EB_DUBBOADMIN_PORT:30112CHECK_CA:trueRECEIPT_HOST:127.0.0.1RECEIPT_PORT:8081PATCH_URL:http://172.16.10.164:30113MOUDLES:ebdownload,ebmanageebmanage服务端口:内部端点:ebmanage-new.kube-system:8081TCPebmanage-new.kube-system:30110TCP5、查看容器启动日志,进入部署的列表,点击要查看的应用服务:进入到容器列表,右边选择要查看的容器日志:11/16通过k8s平台就可以查看容器内日志,支持分页查看:6、外部服务端口映射12/16左边菜单栏点击服务,进入服务列表,点击编辑,添加以下内容:"spec":{"ports":[{"name":"tcp-30110-8081-t69b2","protocol":"TCP","port":8081,"targetPort":8081,"nodePort":30110}],"selector":{"k8s-app":"ebmanage"},"clusterIP":"10.98.158.119","type":"LoadBalancer","sessionAffinity":"None","externalTrafficPolicy":"Cluster"},此时可以通过浏览器对该端口进行访问,例如https://172.20.184.79:30110/login:13/16具体操作流程与参数配置,可以参考《银企私有云容器化部署指导文档》。4.部署过程常见问题1、部署k8s单机节点,无法部署pod,提示污点atleastonetaintupdateisrequired可以使用指令将master节点也作为部署节点使用,默认情况下master节点不用于容器部署:允许master节点部署podkubectltaintnodes--allnode-role.kubernetes.io/master-如果不允许调度kubectltaintnodesmaster1node-role.kubernetes.io/master=:NoSchedule污点可选参数NoSchedule:一定不能被调度PreferNoSchedule:尽量不要调度NoExecute:不仅不会调度,还会驱逐Node上已有的Pod2、登录到k8s平台部署的时候,提示没有权限:14/16执行下面指令为匿名用户赋权:kubectlcreateclusterrolebindingtest:anonymous--clusterrole=cluster-admin--user=system:anonymous3、多用户、浏览器登录,可能会出现权限被禁用的问题,报错信息如下:解决方案:创建一个群集管理服务帐户在此步骤中,我们将为仪表板创建服务帐户并获取其凭据。运行以下命令:此命令将在默认名称空间中为仪表板创建服务帐户kubectlcreateserviceaccountdashboard-ndefault将集群绑定规则添加到您的仪表板帐户kubectlcreateclusterrolebindingdashboard-admin-ndefault--clusterrole=cluster-admin--serviceaccount=default:dashboard使用以下命令复制仪表板登录所需的令牌:kubectlgetsecret$(kubectlgetserviceaccountdashboard-ojsonpath="{.secrets[0].name}")-ojsonpath="{.data.token}"|base64--decode复制令牌,然后通过选择令牌选项将其粘贴到仪表板登录页面中注意其他用户的令牌也无需要执行:kubectlgetsecret$(kubectlgetserviceaccountdashboard-ojsonpath="{.secrets[0].name}")-ojsonpath="{.data.token}"|base64--decode进行获取,这样登录后才能够有操作权限。15/1616/16