Kubernetes - 搭建、配置

搭建环境:

阿里云服务器:Centos7 1核 1G (作为master)
阿里云服务器:Centos7 1核 2G (作为节点)
腾讯云服务器:Centos7 1核 1G (作为节点)

Master安装及配置

必要的服务:etcd、kube-apiserver、kube-controller-manager、kube-scheduler

安装
yum install -y etcd kubernetes

不出意外的话,此时ectd、kubernetes、docker已经安装完成。由于kubernetes的master与节点间会大量的通信,需要配置组件间相互通信的端口号,内网下直接关闭防火墙即可:

systemctl disable firewalld
systemctl stop firewalld
etcd

ectd作为Kubernetes集群的主数据库,早安装Kubernetes各服务前需要优先安装和启动。设置systemd服务文件

cat /usr/lib/systemd/system/etcd/etcd.service
输出如下:
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
User=etcd
# set GOMAXPROCS to number of processors
ExecStart=/usr/bin/etcd
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

其中,WorkingDirectory表示etcd数据保存目录,EnvironmentFile表示etcd配置文件,此文件不需要做改动,可以查看它进行了解:

cat /etc/etcd/etcd.conf

ectd默认监听在127.0.0.1:2379(localhost:2379)地址供客户端连接,配置完成后,启动服务:

systemctl daemon-reload
systemctl start etcd.service

验证ectd是否正确启动:

ectdctl cluster-health
输出:
member 8e9e05c52164694d is healthy: got healthy result from http://localhost:2379
cluster is healthy

如上面输出cluster is healthy则表示正确启动。

kube-apiserver

编辑systemd服务文件:/usr/lib/systemd/system/kube-apiserver.service

EnvironmentFile=-/etc/kubernetes/apiserver
User=kube
ExecStart=/usr/bin/kube-apiserver \
    $KUBE_LOGTOSTDERR \
    $KUBE_LOG_LEVEL \
    $KUBE_ETCD_SERVERS \
    $KUBE_API_ADDRESS \
    $KUBE_API_PORT \
    $KUBELET_PORT \
    $KUBE_ALLOW_PRIV \
    $KUBE_SERVICE_ADDRESSES \
    $KUBE_ADMISSION_CONTROL \
    $KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

查看上面展示的EnvironmentFile项(环境配置文件),那么显然后面紧跟的路径/etc/kubernetes/apiserver就是环境配置文件了,如下:

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# KUBE_API_PORT="--insecure-port=8080"
# KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_API_ARGS=""
解释:
KUBE_API_ADDRESS:服务监听地址,后面的值表示绑定主机的所有IP地址。
KUBE_API_PORT:服务在哪个端口进行监听
KUBE_ETCD_SERVERS:etcd服务URL
KUBE_SERVICE_ADDRESSES:使用此服务的地址范围,值表示Kubernetes集群中Service的虚拟IP地址段范围。
KUBE_ADMISSION_CONTROL:Kubernetes集群的准入控制设置,各模块以插件形式依次生效。
kube-controller-manager、kube-scheduler

同上面的方式可以对对应的配置文件进行修改,当然其实我们并没对他们进行什么修改,只是为了对配置文件更加理解。下面是对应配置文件位置:

/usr/lib/systemd/system/kube-controller-manager.service
/etc/kubernetes/controller-manager

/usr/lib/systemd/system/kube-scheduler.service
/etc/kubernetes/scheduler

启动

顺序启动这些服务:

systemctl daemon-reload
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler

查看服务是否启动成功:

systemctl status 
例子:
systemctl status etcd

到此,master所需服务全部启动完成。

Node安装配置

node上的服务:kubelet、kube-proxy,安装:

yum install kubernetes

启动docker:

docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:2375 >> /var/log/docker.log 2>&1 &
kubelet

配置如下(/etc/kubernetes/kubelet):

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=这里填写node的名称,任意"
KUBELET_API_SERVER="--api-servers=http://这里填写master的ip:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

启动kubelet:

systemctl start kubelet
kube-proxy

配置如下(/etc/kubernetes/proxy):

KUBE_PROXY_ARGS="--master=http://这里填写master的ip:8080 --proxy-mode=iptables --logtostderr=true"

启动kube-proxy:

systemctl start kube-proxy

这些服务若启动成功且正常那么就成功了,那么怎样查看服务启动状态呢:

systemctl status 
例子:
systemctl status kube-proxy

在上面命令输出中查看是否出错等…
接下来在master中查看node是否连接:

kubectl get nodes

若上诉命令输出是下面这样的,那么恭喜!

NAME    STATUS    AGE
...

上一篇:Kubernetes-快速体验

你可能感兴趣的:(Kubernetes学习笔记)