K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少。这篇文章是使用二进制包部署Kubernetes集群。
| <br>角色<br> | <br>IP<br> | <br>组件<br> |
| <br>master<br> | <br>192.168.0.211<br> | <br>etcd<br><br>kube-apiserver<br><br>kube-controller-manager<br><br>kube-scheduler<br> |
| <br>node01<br> | <br>192.168.0.212<br> | <br>kubelet<br><br>kube-proxy<br><br>docker<br> |
| <br>node02<br> | <br>192.168.0.213<br> | <br>kubelet<br><br>kube-proxy<br><br>docker<br> |
环境说明:
操作系统:Ubuntu16.04 or CentOS7
Kubernetes版本:v1.8.3
Docker版本:v17.09-ce
均采用当前最新稳定版本。
关闭selinux。
打开下面网址,下载下面两个红色框框的包。
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md#v183
下载完成后,上传到服务器:
kubernetes-server-linux-amd64.tar.gz上传到master节点。
kubernetes-node-linux-amd64.tar.gz 上传到node节点。
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br> | <br>k8s-master``# yum install etcd –y
<br><br>k8s-master``# vi /etc/etcd/etcd.conf
<br><br>ETCD_NAME=``"default"
<br><br>ETCD_DATA_DIR=``"/var/lib/etcd/default"
<br><br>ETCD_LISTEN_CLIENT_URLS=``"http://0.0.0.0:2379"
<br><br>ETCD_ADVERTISE_CLIENT_URLS=http:``//0``.0.0.0:2379
<br><br>k8s-master``# systemctl enable etcd
<br><br>k8s-master``# systemctl start etcd
<br> |
注意:Ubuntu系统etcd配置文件在/etc/default/etcd。
| <br>1<br><br>2<br><br>3<br> | <br>k8s-master``# tar zxvf kubernetes-server-linux-amd64.tar.gz
<br><br>k8s-master``# mkdir -p /opt/kubernetes/{bin,cfg}
<br><br>k8s-master``# mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin
<br> |
创建配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br><br>15<br><br>16<br><br>17<br> | <br># vi /opt/kubernetes/cfg/kube-apiserver
<br><br># 启用日志标准错误
<br><br>KUBE_LOGTOSTDERR=``"--logtostderr=true"
<br><br># 日志级别
<br><br>KUBE_LOG_LEVEL=``"--v=4"
<br><br># Etcd服务地址
<br><br>KUBE_ETCD_SERVERS=``"--etcd-servers=http://192.168.0.211:2379"
<br><br># API服务监听地址
<br><br>KUBE_API_ADDRESS=``"--insecure-bind-address=0.0.0.0"
<br><br># API服务监听端口
<br><br>KUBE_API_PORT=``"--insecure-port=8080"
<br><br># 对集群中成员提供API服务地址
<br><br>KUBE_ADVERTISE_ADDR=``"--advertise-address=192.168.0.211"
<br><br># 允许容器请求特权模式,默认false
<br><br>KUBE_ALLOW_PRIV=``"--allow-privileged=false"
<br><br># 集群分配的IP范围
<br><br>KUBE_SERVICE_ADDRESSES=``"--service-cluster-ip-range=10.10.10.0/24"
<br> |
创建systemd服务文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br><br>15<br><br>16<br><br>17<br><br>18<br><br>19<br> | <br># vi /lib/systemd/system/kube-apiserver.service
<br><br>[Unit]
<br><br>Description=Kubernetes API Server
<br><br>Documentation=https:``//github``.com``/kubernetes/kubernetes
<br><br>[Service]
<br><br>EnvironmentFile=-``/opt/kubernetes/cfg/kube-apiserver
<br><br>#ExecStart=/opt/kubernetes/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
<br><br>ExecStart=``/opt/kubernetes/bin/kube-apiserver
\
<br><br>${KUBE_LOGTOSTDERR} \
<br><br>${KUBE_LOG_LEVEL} \
<br><br>${KUBE_ETCD_SERVERS} \
<br><br>${KUBE_API_ADDRESS} \
<br><br>${KUBE_API_PORT} \
<br><br>${KUBE_ADVERTISE_ADDR} \
<br><br>${KUBE_ALLOW_PRIV} \
<br><br>${KUBE_SERVICE_ADDRESSES}
<br><br>Restart=on-failure
<br><br>[Install]
<br><br>WantedBy=multi-user.target
<br> |
启动服务,并设置开机启动:
| <br>1<br><br>2<br><br>3<br> | <br># systemctl daemon-reload
<br><br># systemctl enable kube-apiserver
<br><br># systemctl restart kube-apiserver
<br> |
注意:apiserver默认支持etcd3,如果是etcd2,需启动时指定版本选项--storage-backend=etcd2
创建配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br> | <br># vi /opt/kubernetes/cfg/kube-scheduler
<br><br>KUBE_LOGTOSTDERR=``"--logtostderr=true"
<br><br>KUBE_LOG_LEVEL=``"--v=4"
<br><br>KUBE_MASTER=``"--master=192.168.0.211:8080"
<br><br>KUBE_LEADER_ELECT=``"--leader-elect"
<br> |
创建systemd服务文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br> | <br># vi /lib/systemd/system/kube-scheduler.service
<br><br>[Unit]
<br><br>Description=Kubernetes Scheduler
<br><br>Documentation=https:``//github``.com``/kubernetes/kubernetes
<br><br>[Service]
<br><br>EnvironmentFile=-``/opt/kubernetes/cfg/kube-scheduler
<br><br>ExecStart=``/opt/kubernetes/bin/kube-scheduler
\
<br><br>${KUBE_LOGTOSTDERR} \
<br><br>${KUBE_LOG_LEVEL} \
<br><br>${KUBE_MASTER} \
<br><br>${KUBE_LEADER_ELECT}
<br><br>Restart=on-failure
<br><br>[Install]
<br><br>WantedBy=multi-user.target
<br> |
启动服务,并设置开机启动:
| <br>1<br><br>2<br><br>3<br> | <br># systemctl daemon-reload
<br><br># systemctl enable kube-scheduler
<br><br># systemctl restart kube-scheduler
<br> |
创建配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br> | <br># vi /opt/kubernetes/cfg/kube-controller-manager
<br><br>KUBE_LOGTOSTDERR=``"--logtostderr=true"
<br><br>KUBE_LOG_LEVEL=``"--v=4"
<br><br>KUBE_MASTER=``"--master=192.168.0.211:8080"
<br> |
创建systemd服务文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br> | <br># vi /lib/systemd/system/kube-controller-manager.service
<br><br>[Unit]
<br><br>Description=Kubernetes Controller Manager
<br><br>Documentation=https:``//github``.com``/kubernetes/kubernetes
<br><br>[Service]
<br><br>EnvironmentFile=-``/opt/kubernetes/cfg/kube-controller-manager
<br><br>ExecStart=``/opt/kubernetes/bin/kube-controller-manager
\
<br><br>${KUBE_LOGTOSTDERR} \
<br><br>${KUBE_LOG_LEVEL} \
<br><br>${KUBE_MASTER} \
<br><br>${KUBE_LEADER_ELECT}
<br><br>Restart=on-failure
<br><br>[Install]
<br><br>WantedBy=multi-user.target
<br> |
启动服务,并设置开机启动:
| <br>1<br><br>2<br><br>3<br> | <br># systemctl daemon-reload
<br><br># systemctl enable kube-controller-manager
<br><br># systemctl restart kube-controller-manager
<br> |
Master节点组件就全部启动了,需要注意的是服务启动顺序有依赖,先启动etcd,再启动apiserver,其他组件无顺序要求。
查看Master节点组件进程状态:
说明组件都在运行。
如果启动失败,请查看启动日志,例如:
#journalctl -u kube-apiserver
| <br>1<br><br>2<br><br>3<br> | <br>k8s-node01``# tar zxvf kubernetes-node-linux-amd64.tar.gz
<br><br>k8s-node01``# mkdir -p /opt/kubernetes/{bin,cfg}
<br><br>k8s-node01``# mv kubernetes/node/bin/{kubelet,kube-proxy} /opt/kubernetes/bin/
<br> |
创建kubeconfig配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br> | <br># vi /opt/kubernetes/cfg/kubelet.kubeconfig
<br><br>apiVersion: v1
<br><br>kind: Config
<br><br>clusters:
<br><br> ``- cluster:
<br><br> ``server: http:``//192``.168.0.211:8080
<br><br> ``name: ``local
<br><br>contexts:
<br><br> ``- context:
<br><br> ``cluster: ``local
<br><br> ``name: ``local
<br><br>current-context: ``local
<br> |
kubeconfig文件用于kubelet连接master apiserver。
创建配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br><br>15<br><br>16<br><br>17<br><br>18<br><br>19<br><br>20<br> | <br># vi /opt/kubernetes/cfg/kubelet
<br><br># 启用日志标准错误
<br><br>KUBE_LOGTOSTDERR=``"--logtostderr=true"
<br><br># 日志级别
<br><br>KUBE_LOG_LEVEL=``"--v=4"
<br><br># Kubelet服务IP地址
<br><br>NODE_ADDRESS=``"--address=192.168.0.212"
<br><br># Kubelet服务端口
<br><br>NODE_PORT=``"--port=10250"
<br><br># 自定义节点名称
<br><br>NODE_HOSTNAME=``"--hostname-override=192.168.0.212"
<br><br># kubeconfig路径,指定连接API服务器
<br><br>KUBELET_KUBECONFIG=``"--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig"
<br><br># 允许容器请求特权模式,默认false
<br><br>KUBE_ALLOW_PRIV=``"--allow-privileged=false"
<br><br># DNS信息
<br><br>KUBELET_DNS_IP=``"--cluster-dns=10.10.10.2"
<br><br>KUBELET_DNS_DOMAIN=``"--cluster-domain=cluster.local"
<br><br># 禁用使用Swap
<br><br>KUBELET_SWAP=``"--fail-swap-on=false"
<br> |
创建systemd服务文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br><br>15<br><br>16<br><br>17<br><br>18<br><br>19<br><br>20<br><br>21<br><br>22<br> | <br># vi /lib/systemd/system/kubelet.service
<br><br>[Unit]
<br><br>Description=Kubernetes Kubelet
<br><br>After=docker.service
<br><br>Requires=docker.service
<br><br>[Service]
<br><br>EnvironmentFile=-``/opt/kubernetes/cfg/kubelet
<br><br>ExecStart=``/opt/kubernetes/bin/kubelet
\
<br><br>${KUBE_LOGTOSTDERR} \
<br><br>${KUBE_LOG_LEVEL} \
<br><br>${NODE_ADDRESS} \
<br><br>${NODE_PORT} \
<br><br>${NODE_HOSTNAME} \
<br><br>${KUBELET_KUBECONFIG} \
<br><br>${KUBE_ALLOW_PRIV} \
<br><br>${KUBELET_DNS_IP} \
<br><br>${KUBELET_DNS_DOMAIN} \
<br><br>${KUBELET_SWAP} \
<br><br>Restart=on-failure
<br><br>KillMode=process
<br><br>[Install]
<br><br>WantedBy=multi-user.target
<br> |
启动服务,并设置开机启动:
| <br>1<br><br>2<br><br>3<br> | <br># systemctl daemon-reload
<br><br># systemctl enable kubelet
<br><br># systemctl restart kubelet
<br> |
创建配置文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br> | <br># vi /opt/kubernetes/cfg/kube-proxy
<br><br># 启用日志标准错误
<br><br>KUBE_LOGTOSTDERR=``"--logtostderr=true"
<br><br># 日志级别
<br><br>KUBE_LOG_LEVEL=``"--v=4"
<br><br># 自定义节点名称
<br><br>NODE_HOSTNAME=``"--hostname-override=192.168.0.212"
<br><br># API服务地址
<br><br>KUBE_MASTER=``"--master=http://192.168.0.211:8080"
<br> |
创建systemd服务文件:
| <br>1<br><br>2<br><br>3<br><br>4<br><br>5<br><br>6<br><br>7<br><br>8<br><br>9<br><br>10<br><br>11<br><br>12<br><br>13<br><br>14<br> | <br># vi /lib/systemd/system/kube-proxy.service
<br><br>[Unit]
<br><br>Description=Kubernetes Proxy
<br><br>After=network.target
<br><br>[Service]
<br><br>EnvironmentFile=-``/opt/kubernetes/cfg/kube-proxy
<br><br>ExecStart=``/opt/kubernetes/bin/kube-proxy
\
<br><br>${KUBE_LOGTOSTDERR} \
<br><br>${KUBE_LOG_LEVEL} \
<br><br>${NODE_HOSTNAME} \
<br><br>${KUBE_MASTER}
<br><br>Restart=on-failure
<br><br>[Install]
<br><br>WantedBy=multi-user.target
<br> |
启动服务,并设置开机启动:
| <br>1<br><br>2<br><br>3<br> | <br># systemctl daemon-reload
<br><br># systemctl enable kube-proxy
<br><br># systemctl restart kube-proxy
<br> |
其他节点加入集群与node01方式相同,但需修改kubelet的--address和--hostname-override选项为本机IP。
查看Node节点组件进程状态:
说明组件都在运行。
如果启动失败,请查看启动日志,例如:
#journalctl -u kubelet
设置可执行文件到系统变量,方便使用:
| <br>1<br><br>2<br> | <br># echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile
<br><br># source /etc/profile
<br> |
查看集群节点状态:
两个节点都加入到了kubernetes集群,就此部署完成。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://feiutech.blog.csdn.net/article/details/78592023
内容来源于网络,如有侵权,请联系作者删除!