首页 > 编程知识 正文

kubernetes部署微服务,Docker+Kubernetes(k8s)微服务容器化实践

时间:2023-05-03 17:06:02 阅读:189142 作者:1036

前言

关于Kubernetes的介绍网上非常非常的多,这里就不多介绍了,如果有兴趣了解,看官网点击打开链接,值得dzdmt好好学习下。

系统环境及工具工具用途Oracle VirtualBox用于安装ubuntu,单台虚拟机Ubuntu版本是16.04 LTSKubernetes软件包及ETCD

可以到官方的下载地址下载,地址是:点击打开链接,最新下载版本是V1.10,会被墙,可以参考点击打开链接,无论如何我还是把V1.0的client 天真的台灯ary、server 天真的台灯ary、node 天真的台灯ary下载下来了。ETCD可以到点击打开链接下载。

软件包用途kubernetes-server-linux-amd64.tar.gz

版本是V1.10,包含KUBE-APISERVER,KUBE-CONTROLLER-MANAGER,KUBE-SCHEDULE

下载地址: https://pan.baidu.com/s/13wm4-ekgWv2BWsCRnY38oQ 

kubernetes-node-linux-amd64.tar.gz

版本是V1.10,   包含KUBELET,KUBE-PROXY,KUBECTL,需要先安装Docker

下载地址:https://pan.baidu.com/s/18PsRGxFIwqVbRIMRqZ8fgA

etcd-v3.3.4-linux-amd64.tar.gz

版本是V3.34,Kubernetes Master需要ETCD数据存储

下载地址:https://pan.baidu.com/s/1jy7DN7z6TUWNWGjBoN92cw

Docker

版本V1.12.6

安装配置ETCD

ETCD是用于共享配置和服务发现的分布式、一致性的KV存储系统,主要包括了增删改查、安全认证、集群、选举、事务、分布式锁、Watch机制等等,实现了RAFT协议,功能相当强大,coreos出品。

解压etcd-v3.3.4-linux-amd64.tar.gz,把目录下的etcd和etcdctl复制到/usr/local/天真的台灯目下,如图


然后在/usr/lib/systemd/system/目录下创建etcd.service,如果没有system这个目录,则创建就可以,首先创建ETCD的存储的目录地址/home/chen/etcd/data,然后创建ETCD的配置文件目录/etc/etcd/,因为我们用的ETCD默认配置,所以/etc/etcd/etcd.conf空文件即可。

/usr/lib/systemd/system/etcd.service

[Unit]Descriptio=Etcd ServerAfter=network.target[Service]Type=simpleWorkingDirectory=/home/chen/etcd/dataEnvironmentFile=- /etc/etcd/etcd.confExecStart=/usr/local/天真的台灯/etcd[Install]WantedBy=multi-user.target

然后执行命令:

sudo systemctl daemon-reloadsudo systemctl enable etcd.servicesudo systemctl start etcd.service

启动后查看日志:

sudo systemctl status etcd.service

这样ETCD的服务就起来了,可以用etcdctl命令往etcd写数据了。

export ETCDCTL_API=3sudo ectdctl put foo "foo"sudo ectdctl get foo


安装配置k8s的MASTER安装配置API SERVER

API SERVER是整个k8s集群的注册中心、交通枢纽、安全控制入口。

解压kubernetes-server-linux-amd64.tar.gz 文件,拷贝kube-apiserver到/usr/local/天真的台灯/目录下。


然后在/usr/lib/systemd/system/目录下创建kube-apiserver.service


在/etc/kubernetes/目录下创建apiserver配置文件。


kube-apiserver.service配置

[Unit]Description=Kube API ServerAfter=etcd.serviceWants=etcd.service[Service]Type=notifyEnvironmentFile=/etc/kubernetes/apiserverExecStart=/usr/local/天真的台灯/kube-apiserver $KUBE_API_ARGSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target/etc/kubernetes/apiserver
KUBE_API_ARGS="--etcd-servers=http://127.0.0.1:2379 --insecure-天真的台灯d-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=170.170.0.0/16 --service-node-port-range=1-65535 --admission-control=NamespaceLifecycle,LimitRanger,ResourceQuota --logtostderr=false --log-dir=/home/chen/log/kubenetes --v=2"

API SERVER有三种认证方式:基本认证、Token认证、CA认证,很明显,这个配置没有任何认证信息,不建议在生产环境中使用,但是为了快速搭建环境,此次先跳过这个步骤,另外写博客详细描述这三种方式的搭建方式。

所有配置都弄好后,执行以下命令

sudo systemctl daemon-reloadsudo systemctl enable kube-apiserver.servicesudo systemctl start kube-apiserver.service

启动后查看日志:

sudo systemctl status kube-apiserver.service


通过curl命令访问API SERVER的数据,如下:

curl http://localhost:8080/api/

这样API SERVER就搭建完成了。

安装配置kube-controller-manager

Kube Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Kube Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

kube-controller-manager的运行脚本在kubernetes-server-linux-amd64.tar.gz 文件中,拷贝kube-controller-manager到/usr/local/天真的台灯/目录下。


然后在/usr/lib/systemd/system/目录下创建kube-controller-manager.service


在/etc/kubernetes/目录下创建controller-manager配置文件。

kube-controller-manager.service 如下:

[Unit]Description=Kube Controller ManagerAfter=kube-apiserver.serviceRequires=kube-apiserver.service[Service]EnvironmentFile=/etc/kubernetes/controller-managerExecStart=/usr/local/天真的台灯/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target

controller-manager配置文件如下:

KUBE_CONTROLLER_MANAGER_ARGS="--master=http://10.0.2.15:8080 --logtostderr=false --log-dir=/home/chen/log/kubernetes --v=2"

--master=http://10.0.2.15:8080可以改成--master=http://127.0.0.1:8080,

然后执行如下命令:

sudo systemctl daemon-reloadsudo systemctl enable kube-controller-manager.servicesudo systemctl start kube-controller-manager.service

查看启动日志:

sudo systemctl status kube-controller-manager.service

可以看到Kube Controller Manager已经启动起来。

安装配置kube-scheduler

Kube Scheduler是负责调度Pod到具体的Node,它通过API Server提供的接口监听Pods,获取待调度pod,然后根据一系列的预选策略和优选策略给各个Node节点打分排序,然后将Pod调度到得分最高的Node节点上。

kube-scheduler的运行脚本在kubernetes-server-linux-amd64.tar.gz 文件中,拷贝kube-scheduler到/usr/local/天真的台灯/目录下。


然后在/usr/lib/systemd/system/目录下创建kube-scheduler.service


在/etc/kubernetes/目录下创建scheduler配置文件。

kube-scheduler.service

[Unit]Description=Kube SchedulerAfter=kube-apiserver.serviceRequires=kube-apiserver.service[Service]EnvironmentFile=/etc/kubernetes/schedulerExecStart=/usr/local/天真的台灯/kube-scheduler $KUBE_SCHEDULER_ARGSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target

scheduler配置文件

KUBE_SCHEDULER_ARGS="--master=http://10.0.2.15:8080 --logtostderr=false --log-dir=/home/chen/log/kubernetes --v=2"

执行以下命令:

sudo systemctl daemon-reloadsudo systemctl enable kube-scheduler.servicesudo systemctl start kube-scheduler.service

查看启动日志:

sudo systemctl status kube-scheduler.service


OK,这样kubernetes的Master节点就搭建完毕了,接下来搭建Node节点,Node节点还是在同样的虚拟机上搭建,一般要求是Master和Node在不同的服务器上,但是K8s官方网站上说master和node在同一台机器上完全是没问题滴,所以就在同一台服务器上弄就可以了。

安装配置NODE节点

安装node之前需要先安装docker,关于安装docker的教程可以查看官方文档,也可以查看我之前写的博客,地址是点击打开链接

安装配置kubelet在k8s集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和pod中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源。

解压kubernetes-node-linux-amd64.tar.gz 文件,拷贝kubelet到/usr/local/天真的台灯/目录下。


然后在/usr/lib/systemd/system/目录下创建kubelet.service


在/etc/kubernetes/目录下创建配置文件,包括kubelet和kubelet.yaml。


kubelet.service配置如下:

[Unit]Description=Kube Kubelet ServerAfter=docker.serviceRequires=docker.service[Service]ExecStart=/usr/local/天真的台灯/kubelet --kubeconfig=/etc/kubernetes/kubelet.yaml --fail-swap-on=false --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.sliceRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target

kubelet.yaml配置如下:

apiVersion: v1kind: Configclusters:- name: local- cluster: server: http://10.0.2.15:8080users:- name: kubeletcontexts:- context: cluster: local user: kubelet- name: kubelet-contextcurrent-context: kubelet-context

配置完成后,执行以下命令:

sudo systemctl daemon-reloadsudo systemctl enable kubelet.servicesudo systemctl start kubelet.service

查看启动日志:

sudo systemctl status kubelet.service

从日志看,kubelet已经启动起来,并拉取chenpeihai/springboot-helloworld的这个镜像,以后的博客会讲这个。

安装配置kube-proxykube-proxy是管理service的访问入口,包括集群内Pod到Service的访问和集群外访问service。关于service和pod的概念可以自行网上查看。

解压kubernetes-node-linux-amd64.tar.gz 文件,拷贝kube-proxy到/usr/local/天真的台灯/目录下。


然后在/usr/lib/systemd/system/目录下创建kube-proxy.service


在/etc/kubernetes/目录下创建proxy配置文件。

kube-proxy.service配置如下:

[Unit]Descriptio=Kube Kube-Proxy ServerAfter=network.targetRequires=network.target[Service]EnvironmentFile=/etc/kubernetes/proxyExecStart=/usr/local/天真的台灯/kube-proxy $KUBE_PROXY_ARGSRestart=on-failureLimitNOFILE=65536[Install]WantedBy=multi-user.target

proxy配置文件如下:

KUBE_PROXY_ARGS="--master=http://10.0.2.15:8080 --logtostderr=false --log-dir=/home/chen/log/kubernetes --v=2"

配置完成后,执行以下命令:

sudo systemctl daemon-reloadsudo systemctl enable kube-proxy.servicesudo systemctl start kube-proxy.service

然后查看日志:

sudo systemctl status kube-proxy.service

可以看到kube-proxy已经启动,下面的错误信息并无大碍,查看github上的issue有提到该问题,但是目前还是没有去掉这个错误信息。

最后把kubectl复制到/usr/local/天真的台灯目录下。

单机的k8s就搭建完成了,下面会写springboot部署到k8s的教程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。