kubernetes构建微服务-k8s安装篇 - Go语言中文社区

kubernetes构建微服务-k8s安装篇


前言

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

系统环境及工具

工具用途
Oracle VirtualBox用于安装ubuntu,单台虚拟机
Ubuntu版本是16.04 LTS

Kubernetes软件包及ETCD

可以到官方的下载地址下载,地址是:点击打开链接,最新下载版本是V1.10,会被墙,可以参考点击打开链接,无论如何我还是把V1.0的client binary、server binary、node binary下载下来了。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/bin目下,如图


然后在/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 Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/chen/etcd/data
EnvironmentFile=- /etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd

[Install]
WantedBy=multi-user.target

然后执行命令:

sudo systemctl daemon-reload
sudo systemctl enable etcd.service
sudo systemctl start etcd.service

启动后查看日志:

sudo systemctl status etcd.service

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

export ETCDCTL_API=3
sudo 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/bin/目录下。


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


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


kube-apiserver.service配置

[Unit]
Description=Kube API  Server
After=etcd.service
Wants=etcd.service

[Service]
Type=notify
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/local/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
/etc/kubernetes/apiserver
KUBE_API_ARGS="--etcd-servers=http://127.0.0.1:2379 --insecure-bind-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-reload
sudo systemctl enable kube-apiserver.service
sudo 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/bin/目录下。


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


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

kube-controller-manager.service 如下:

[Unit]
Description=Kube Controller Manager
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=/etc/kubernetes/controller-manager
ExecStart=/usr/local/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=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-reload
sudo systemctl enable kube-controller-manager.service
sudo 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/bin/目录下。


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


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

kube-scheduler.service

[Unit]
Description=Kube Scheduler
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=/etc/kubernetes/scheduler
ExecStart=/usr/local/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=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-reload
sudo systemctl enable kube-scheduler.service
sudo 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/bin/目录下。


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


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


kubelet.service配置如下:

[Unit]
Description=Kube Kubelet Server
After=docker.service
Requires=docker.service

[Service]
ExecStart=/usr/local/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.yaml --fail-swap-on=false --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

kubelet.yaml配置如下:

apiVersion: v1
kind: Config
clusters:
-  name: local
-  cluster:
      server: http://10.0.2.15:8080
users:
-  name: kubelet
contexts:
-  context: 
     cluster: local
     user: kubelet
-   name: kubelet-context
current-context: kubelet-context

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

sudo systemctl daemon-reload
sudo systemctl enable kubelet.service
sudo systemctl start kubelet.service

查看启动日志:

sudo systemctl status kubelet.service

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

安装配置kube-proxy

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

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


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


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

kube-proxy.service配置如下:

[Unit]
Descriptio=Kube Kube-Proxy Server
After=network.target
Requires=network.target

[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/local/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=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-reload
sudo systemctl enable kube-proxy.service
sudo systemctl start kube-proxy.service

然后查看日志:

sudo systemctl status kube-proxy.service

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

最后把kubectl复制到/usr/local/bin目录下。

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39686421/article/details/80333015
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 21:51:15
  • 阅读 ( 2524 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢