Kubernetes(k8s)
Kubernetes简介
Kubernetes是google开源的多主机容器管理工具, 简称:k8s,它带有人性化图形管理界面, 它在开源社区很受欢迎github上已经有了20000+的收藏,和7000+的fork。
Kubernetes其特性主要包括:
1、可以非常轻松地开发复杂系统;
2、Kubernetes为微服务架构;
3、系统可以随时随地整体“搬迁”到公有云上;
4、Kubernetes系统架构具备了超强的横向扩容能力。
Kubernetes使用的资源对象
在Kubernetes中,Node、Pod、Replication Controller、Service等概念都可以看作一种资源对象,通过Kubernetes提供的Kubectl工具或者API调用进行操作,并保存在etcd中。
实验环境
系统版本:centos7x3.10.0-514.el7.x86_64
Kubernetes版本:v1.8.3
Docker版本:docker-ce.x86_64 0:18.03.1.ce-1.el7.centos
注:以上最好两个均采用当前最新稳定版本。
关闭防火墙并禁止开机自启
systemctl stop firewalld.service
systemctl disable firewalld
关闭selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/sysconfig/selinux
重启 reboot
搭建k8s集群
master主机(IP:192.168.152.170)
安装组件:etcd kube-apiserver kube-controller-manager kube-scheduler
1、安装kubernetes服务端
1)下载二进制源码包
wget https://dl.k8s.io/v1.8.3/kubernetes-server-linux-amd64.tar.gz
注:直接在master服务器上执行命令下载即可!
2)解压源码包
tar zxf kubernetes-server-linux-amd64.tar.gz
3)递归创建kubernetes运行文件存放目录
mkdir -p /k8s/{bin,cfg}
4)将解压目录里的文件移动到新创建的目录里
mv kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl} /k8s/bin/
2、安装etcd组件(默认版本:etcd.x86_64 0:3.2.22-1.el7)
1)安装etcd
yum -y install etcd
2)编辑etcd的配置文件
vi /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
注:Ubuntu系统etcd配置文件在/etc/default/etcd。
3)启动etcd服务
#设置etcd服务开机自启
systemctl enable etcd
#启动etcd服务
systemctl start etcd
3、配置kube-apiserver组件
1)创建kube-apiserver配置文件
vi /k8s/cfg/kube-apiserver
#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#Etcd服务地址
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.152.170:2379"
#API服务监听地址
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
#API服务监听端口
KUBE_API_PORT="--insecure-port=8080"
#对集群中成员提供API服务地址
KUBE_ADVERTISE_ADDR="--advertise-address=192.168.152.170"
#允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
#集群分配的IP范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.0.100.0/24"
2)创建kube-apiserver的systemd服务启动文件
vi /lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/k8s/cfg/kube-apiserver
#ExecStart=/k8s/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
ExecStart=/k8s/bin/kube-apiserver \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_ETCD_SERVERS} \
${KUBE_API_ADDRESS} \
${KUBE_API_PORT} \
${KUBE_ADVERTISE_ADDR} \
${KUBE_ALLOW_PRIV} \
${KUBE_SERVICE_ADDRESSES}
Restart=on-failure
[Install]
WantedBy=multi-user.target
3)启动kube-apiserver服务
#重新加载kube-apiserver服务守护进程
systemctl daemon-reload
#设置kube-apiserver服务开机自启
systemctl enable kube-apiserver
#重启kube-apiserver服务
systemctl restart kube-apiserver
注:apiserver默认支持etcd3,如果是etcd2,需启动时指定版本选项--storage-backend=etcd2
4、配置kube-scheduler组件
1)创建kube-scheduler配置文件
vi /k8s/cfg/kube-scheduler
#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"
#指定master为控制台
KUBE_LEADER_ELECT="--leader-elect"
2)创建kube-scheduler的systemd服务启动文件
vi /lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-scheduler
ExecStart=/k8s/bin/kube-scheduler \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target
3)启动kube-scheduler服务
#重新加载kube-scheduler服务守护进程
systemctl daemon-reload
#设置kube-scheduler服务开机自启
systemctl enable kube-scheduler
#重新启动kube-scheduler服务
systemctl restart kube-scheduler
5、配置kube-controller-manager组件
1)创建kube-controller-manager配置文件
vi /k8s/cfg/kube-controller-manager
#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"
2)创建kube-controller-manager的systemd服务启动文件
vi /lib/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-controller-manager
ExecStart=/k8s/bin/kube-controller-manager \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target
3)启动kube-controller-manager服务
#重新加载kube-controller-manager服务守护进程
systemctl daemon-reload
#设置kube-controller-manager服务开机自启
systemctl enable kube-controller-manager
#重新启动kube-controller-manager服务
systemctl restart kube-controller-manager
注:master节点组件全部启动了,需要注意的是服务启动顺序有依赖,先启动etcd,再启动apiserver,其他组件无顺序要求。
查看master节点组件进程状态 ps -ef | grep kube
注:以上截图说明所有组件都正常运行!如果单独一个组件启动失败可以使用k8s自带查看日志命令。
6、K8s查看具体组件日志的命令
journalctl –u etcd
journalctl -u kube-apiserver
journalctl -u kube-controller-manager
journalctl -u kube-scheduler
node-1主机(192.168.152.168)
安装组件:kubelet kube-proxy docker
1、安装kubernetes的node-1节点
原文地址:http://blog.51cto.com/13043516/2285350