快速部署kubernetes单master集群-学习使用

五、ubuntu16/Centos7上部署安装k8s1.9(二进制包)

5.1 主机节点规划

角色 主机名 主机ip 组件
etcd etcd 192.168.0.106 etcd
master kube-master 192.168.0.107 kube-apiserver,kube-controller-manager,kube-scheduler
node1 kube-node1 192.168.0.108 kubelet,kube-proxy,docker
node2 kube-node2 192.168.0.109 kubelet,kube-proxy,docker
node3 kube-node3 192.168.0.110 kubelet,kube-proxy,docker

5.2 k8s各组件的安装顺序

  1. 获取kubernetes二进制包
  2. 运行master组件
  3. 运行node组件以及安装Docker
  4. 检查集群状态
  5. 测试运行Demo实例

5.2.0 初始化所有的节点信息

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

关闭selinux

setenforce 0
grep -E ‘^SELINUX=‘ /etc/sysconfig/selinux //如果是enforcing,则将其关闭
[[email protected] ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/sysconfig/selinux
[[email protected] ~]# grep -E ‘^SELINUX=‘ /etc/sysconfig/selinux
SELINUX=disabled

创建k8s二进制执行文件和配置文件的存放目录以及命令行程序的环境变量信息

mkdir -pv /opt/kubernetes/{bin,cfg} && echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile && source /etc/profile

5.2.1 获取k8s二进制包

kubernetes in github的仓库中找到CHANGELOG-*.md,里面会找到各个版本的二进制文件,以及安装K8s平台组件的Shell安装脚本,==注意这些脚本在安装的时候要根据自己实际存放二进制的位置做出相应的调整==

下载的文件如下

-rw-r--r--. 1 root root  15628779 Aug  4 16:41 kubernetes-client-linux-1.9.1-amd64.tar.gz
-rw-r--r--. 1 root root 418747484 Aug  4 16:41 kubernetes-server-linux-1.9.1-amd64.tar.gz
-rw-r--r--. 1 root root   2877413 Aug  4 18:28 kubernetes.tar.gz

解压之后按照==主机节点规划==中的说明归档相应的二进制程序文件

tar xf kubernetes-client-linux-1.9.1-amd64.tar.gz
tar xf kubernetes-server-linux-1.9.1-amd64.tar.gz
tar xf kubernetes.tar.gz

解压之后,三个压缩包文件解压后都会存放在同一个叫做Kubernetes的目录中
==准备kube-master节点运行的文件==

cp /root/kubernetes/cluster/centos/master/scripts/{apiserver.sh,controller-manager.sh,scheduler.sh} /opt/kubernetes/
cp /root/kubernetes/server/bin/{kube-controller-manager,kube-scheduler,kube-apiserver,kubectl} /opt/kubernetes/bin/

==准备kube-node节点运行的文件==

cp /root/kubernetes/cluster/centos/node/scripts/{proxy.sh,kubelet.sh} /opt/kubernetes/
cp /root/kubernetes/server/bin/{kubelet,kube-proxy} /opt/kubernetes/bin

5.2.2 安装配置ETCD

因为是测试环境,我们暂且安装一个etcd单节点

yum install epel-release -y
yum install etcd
[[email protected] ~]# cat /etc/etcd/etcd.conf |awk ‘{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}‘
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://192.168.0.106:2379"
ETCD_NAME="k8setcd"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.106:2379"

systemctl start etcd
systemctl status etcd
systemctl enable etcd
journalctl -u etcd //查看日志

5.2.3 运行master组件

  1. 首先运行apiserver.sh
  2. 其次是scheduler.sh
  3. 再者是controller-manager.sh

==脚本中需要注意的地方==

  1. 脚本中的对应的MASTER_ADDRESS,ETCD_SERVERS,以及NODE_ADDRESS都有默认的值,如果我们在此修改成我们自己对应的信息ip,脚本运行不用添加参加,否则需要安装脚本中的顺序添加脚本参数
  2. 脚本中指定二进制以及组件的配置信息的存储位置,可以按情况修改

修改apiserver.sh脚本

[[email protected] kubernetes]# cat apiserver.sh |awk ‘{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}‘
MASTER_ADDRESS=${1:-"192.168.0.107"}
ETCD_SERVERS=${2:-"https://192.168.0.106:2379"}
SERVICE_CLUSTER_IP_RANGE=${3:-"10.10.10.0/24"}
ADMISSION_CONTROL=${4:-""}
cat <<EOF >/opt/kubernetes/cfg/kube-apiserver
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=4"
KUBE_ETCD_SERVERS="--etcd-servers=${ETCD_SERVERS}"
KUBE_API_ADDRESS="--insecure-bind-address=192.168.0.107"
KUBE_API_PORT="--insecure-port=8080"
NODE_PORT="--kubelet-port=10250"
KUBE_ADVERTISE_ADDR="--advertise-address=${MASTER_ADDRESS}"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=${SERVICE_CLUSTER_IP_RANGE}"
KUBE_ADMISSION_CONTROL="--admission-control=${ADMISSION_CONTROL}"
EOF
KUBE_APISERVER_OPTS="   \${KUBE_LOGTOSTDERR}         \                        \${KUBE_LOG_LEVEL}           \                        \${KUBE_ETCD_SERVERS}        \                        \${KUBE_ETCD_CAFILE}         \                        \${KUBE_ETCD_CERTFILE}       \                        \${KUBE_ETCD_KEYFILE}        \                        \${KUBE_API_ADDRESS}         \                        \${KUBE_API_PORT}            \                        \${NODE_PORT}                \                        \${KUBE_ADVERTISE_ADDR}      \                        \${KUBE_ALLOW_PRIV}          \                        \${KUBE_SERVICE_ADDRESSES}   \                        \${KUBE_ADMISSION_CONTROL}   \                        \${KUBE_API_CLIENT_CA_FILE}  \                        \${KUBE_API_TLS_CERT_FILE}   \                        \${KUBE_API_TLS_PRIVATE_KEY_FILE}"
cat <<EOF >/usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
ExecStart=/opt/kubernetes/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl restart kube-apiserver

运行kube-master节点上组件的脚本

//因为我们修改过脚本,因此这些参数加不加都无所谓
/opt/kubernetes/apiserver.sh 192.168.0.107 http://192.168.0.106:2379
/opt/kubernetes/scheduler.sh 192.168.0.107
/opt/kubernetes/controller-manager.sh 192.168.0.107

检查进程

[[email protected] kubernetes]# ps -ef | grep kube | grep -v grep
root      2280     1  2 17:20 ?        00:04:32 /opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=http://192.168.0.106:2379    --insecure-bind-address=192.168.0.107 --insecure-port=8080 --kubelet-port=10250 --advertise-address=192.168.0.107 --allow-privileged=false --service-cluster-ip-range=10.10.10.0/24 --admission-control=
root      2404     1  1 17:23 ?        00:01:53 /opt/kubernetes/bin/kube-scheduler --logtostderr=true --v=4 --master=192.168.0.107:8080 --leader-elect
root      2554     1  1 17:25 ?        00:03:16 /opt/kubernetes/bin/kube-controller-manager --logtostderr=true --v=4 --master=192.168.0.107:8080   --leader-elect

5.2.4 查看日志的方式

  • k8s组件的日志信息默认输出到系统的日志中,centos系统在/var/log/message,ubuntu系统在/var/log/syslog
  • 使用journalctl查看,比如查看apiserver的日志
    [[email protected] ~]# journalctl -u kube-apiserver
    -- Logs begin at 六 2018-08-04 18:19:18 CST, end at 六 2018-08-04 20:06:56 CST. --
    8月 04 18:19:18 master kube-apiserver[2280]: I0804 18:19:18.706331    2280 get.go:238] Starting watch for /apis/extensions/v1beta1/da
    8月 04 18:19:18 master kube-apiserver[2280]: I0804 18:19:18.718459    2280 wrap.go:42] GET /api/v1/namespaces/default: (2.497133ms) 2
    8月 04 18:19:18 master kube-apiserver[2280]: I0804 18:19:18.722771    2280 wrap.go:42] GET /api/v1/namespaces/default/services/kubern
    8月 04 18:19:18 master kube-apiserver[2280]: I0804 18:19:18.727262    2280 wrap.go:42] GET /api/v1/namespaces/default/endpoints/kuber
    8月 04 18:19:19 master kube-apiserver[2280]: I0804 18:19:19.013099    2280 wrap.go:42] GET /api/v1/namespaces/kube-system/endpoints/k

5.2.5 运行kube-node组件

/opt/kubernetes/kubelet.sh
/opt/kubernetes/proxy.sh
[[email protected] kubernetes]# ps -ef | grep kube|grep -v grep
root      2821     1  2 18:41 ?        00:02:08 /opt/kubernetes/bin/kubelet --logtostderr=true --v=4 --address=192.168.0.108 --port=10250 --hostname-override=192.168.0.108 --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --allow-privileged=false --cluster-dns=192.168.0.1 --cluster-domain=cluster.local
root      2955     1  0 18:43 ?        00:00:13 /opt/kubernetes/bin/kube-proxy --logtostderr=true --v=4 --hostname-override=192.168.0.108 --master=http://192.168.0.107:8080

5.2.6 检查k8s平台组件信息

[[email protected] ~]# kubectl get componentstatus
NAME                 STATUS    MESSAGE              ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {"health": "true"}

5.2.7 部署一个nginx

kubectl run nginx --image=nginx --replicas=3

六、学习场景

原文地址:http://blog.51cto.com/bkmaster/2328317

时间: 2024-10-11 05:06:18

快速部署kubernetes单master集群-学习使用的相关文章

二进制搭建kubernetes多master集群【二、配置flannel网络】

上一篇我们已经搭建etcd高可用集群,参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集群] 此文将搭建flannel网络,目的使跨主机的docker能够互相通信,也是保障kubernetes集群的网络基础和保障,下面正式开始配置. 一.部署 Flannel 在所有集群节点都安装Flannel,下面的操作以etcd集群的三个节点为例都执行一遍 1.下载安装Flannel wget https://github.com/coreos/flannel/relea

二进制搭建kubernetes多master集群【四、配置k8s node】

上一篇我们部署了kubernetes的master集群,参考:二进制搭建kubernetes多master集群[三.配置k8s master及高可用] 本文在以下主机上操作部署k8s node k8s-node1:192.168.80.10 k8s-node2:192.168.80.11 k8s-node3:192.168.80.12 以下kubeadm和kubectl命令操作都是在k8s-master1上执行的. kubernetes work 节点运行如下组件: docker kubelet

kubeadm部署kubernetes 1.12集群

kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践. 在Kubernetes的文档Creating a single master cluster with kubeadm中已经给出了目前kubeadm的主要特性已经处于beta状态了,在2018年将进入GA状态,说明kube

Kubernetes系列之kubeadm部署多节点master集群

版本信息 linux Centos7 kubernetes v1.14.5 docker v18.06.1-ce 节点信息 VIP:47.110.19.11 阿里云负载均衡 安装前准备 开始部署前确保所有节点网络正常,能访问公网.主要操作都在VPC-OPEN-MASTER001节点进行,设置VPC-OPEN-MASTER001可以免密码登陆其他节点.所有操作都使用root用户身份进行. 服务器说明 我们这里使用的是五台centos-7.6的虚拟机,具体信息如下表: 系统类型 IP地址 节点角色

kubespray容器化部署kubernetes高可用集群

一.基础环境 docker版本1.12.6 CentOS 7 1.准备好要部署的机器 IP ROLE 172.30.33.89 k8s-registry-lb 172.30.33.90 k8s-master01-etcd01 172.30.33.91 k8s-master02-etcd02 172.30.33.92 k8s-master03-etcd03 172.30.33.93 k8s-node01-ingress01 172.30.33.94 k8s-node02-ingress02 172

Kubernetes(十)单master集群 部署Docker

一.下载docker二进制文件 https://download.docker.com/linux/static/stable/x86_64/ 二.解压 件 tar -zxvf docker-19.03.5.tgz 三.将文件移动到环境变量 mv docker/* /usr/bin 四.将docker.service移动到工作目录下 docker.service501 bytes mv docker.service /usr/lib/systemd/system 五.将docker配置文件dae

kubespray -- 快速部署高可用k8s集群

主机 系统版本      配置       ip Mater.Node,ansible CentOS 7.2                                             4核8G   172.16.6.44      master,Node         CentOS 7.2                                             4核8G   172.16.6.45   Mater.Node            CentOS 7.

Shell脚本快速部署Kubernetes集群系统

本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本. 运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog.51c

使用Rancher的RKE快速部署Kubernetes集群

简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163). 先在Windows机器上,将rke_linux-amd64从github上下载下来,重新命名为rke ,编辑好cluster.yml集群部署文件,使用putty提供的pscp命令,将文件上传到3.161机器上.在3.161机器上,执行rke命令,将集群部署到3.162和3.163机器上. 只要环境配置正确,部署非常快,整个集群5分钟搞定. 准