单节点安装步骤

一、环境

一台安装RedHat7.2操作系统的物理机或虚拟机

二、准备工作

1、避免跟docker的iptables冲突,关闭RedHat防火墙 systemctl disable firewalld

systemctl stop firewalld

三、安装和配置

1、安装etcd和kubernetes

yum -y install etcd kubernetes

以上命令会在安装kubernetes时自动安装docker

2、配置kubernetes apiserver(vi /etc/kubernetes/apiserver)

将KUBE_ADMISSION_CONTROL选项中的ServiceAccount删除掉

3、配置docker并设置docker加速器

由于docker镜像下载模式是从docker hub下载的,非常慢,经常会连接请求超时,必须设置加速器。
        我们可以到阿里云或者DaoCloud注册一个帐号认证登录后选择加速器,便会为我们生成专属加速器地址。我注册的是DaoCloud,类似这样https://o18pfdk4.mirror.aliyuncs.com。(不同系统下docker加速器的设置)

vi /etc/sysconfig/docker 把docker配置文件设置如下 OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --registry-mirror=https://o18pfdk4.mirror.aliyuncs.com'

4、按顺序启动所有相关服务

systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy 可以通过ps -ef | grep kub来查看服务是否起来。到此,我们单机版(单节点)的kubernetes就部署完成了

多节点安装

一、环境

创建三台操作系统为RedHat7.2的虚拟机,其中一台用于master主机,另两台作为node。 假设: master主机ip为:192.168.100.50 node1主机ip为:192.168.100.51 node2主机ip为:192.168.100.52

二、准备工作

1.分别设置这三台虚拟机的主机名

hostnamectl set-hostname 主机名:k8s-master k8s-node1 k8s-node2

2、修改hosts文件

分别修改这三台虚拟机的hosts(vi /etc/hosts)文件,都添加如下内容 192.168.100.50 k8s-mst 192.168.100.51 k8s-nod1 192.168.100.52 k8s-nod2

3、为避免和Docker的iptables产生冲突,关闭Node节点上的防火墙

systemctl stop firewalld systemctl disable firewalld

4、为了让各个节点的时间保持一致,需要为所有节点安装NTP

yum -y install ntp systemctl start ntpd systemctl enable ntpd

三、安装和配置k8s-mst

1、安装kubernetes和etcd

yum -y install kubernetes etcd

查看所安装的版本 etcdctl - -version # etcdctl version: 3.0.15 kubectl - -version # Kubernetes v1.4.0

2、配置etcd(vi /etc/etcd/etcd.conf)

ETCD_NAME=default ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

3、配置kube-apiserver(vi /etc/kubernetes/apiserver)

KUBE_API_ADDRESS="--address=0.0.0.0" KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

4、设置docker加速器

创建一个shell文件来启动这些服务

#file name: k8s-mst.shfor SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart SERVICE systemctl enable SERVICE done

添加执行权限并执行启动服务

chmod 744 k8s-mst.sh ./k8s-master.sh

5、启动etcd, kube-apiserver, kube-controller-manager和kube-scheduler

6、在etcd中配置flannel网络

etcdctl mk /flannel/network/config ‘{“Network”:”172.17.0.0/16”}’

四、安装配置NODE

1、在k8s-nod1和k8s-nod2上共同配置

1.1、安装kubernetes和flannel

yum -y install kubernetes flanne 查看安装的版本 flanneld –version # 0.5.5 1.2、配置flannel(vi /etc/sysconfig/flanneld) FLANNEL_ETCD_ENDPOINTS="http://192.168.100.50:2379" FLANNEL_ETCD_PREFIX="/flannel/network" FLANNEL_OPTIONS="--iface=enp33" 注:FLANNEL_OPTIONS的值是该虚拟机的网卡名称(可用ip a查看) 1.3、配置kubernetes(vi /etc/kubernetes/config) KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://192.168.100.50:8080"

1.4、设置docker加速器

2、仅在k8s-nod1的配置

配置kubelet(vi /etc/kubernetes/kubelet) KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=k8s-nod1" KUBELET_API_SERVER="--api-servers=http://192.168.100.50:8080"

3、仅在k8s-nod2的配置

配置kubelet(vi /etc/kubernetes/kubelet) KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=k8s-nod2" KUBELET_API_SERVER="--api-servers=http://192.168.100.50:8080"

4、在k8s-nod1和k8s-nod-2上启动flanneld, kube-proxy, kubelet和docker服务

依然创建一个shel文件来启动这些服务

#file name: k8s-node.sh

for SERVICE in flanneld kube-proxy kubelet docker;

do

systemctl restart $SERVICE

systemctl enable $SERVICE

systemctl status $SERVICE

done 添加执行权限并执行 chmod 744 k8s-node ./k8s-node 当k8s-nod1和k8s-nod2两台虚拟机的相关服务起来后,我们在k8s-mst虚拟机上应该会看到这两个nodes kubectl get nodes 输出如下 NAME STATUS AGE k8s-nod1 Ready 3h k8s-nod2 Ready 2h 到此,多节点环境搭建就完成了。

五、增删节点

1、删除节点

方法一: 对节点进行集群调度隔离

#file name: unschedule_node.yamlapiVersion: v1
kind: Node
matadata:
name: k8s-nod1
labels:
kubernetes.io/hostname: k8s-nod1
spec:
unschedulable: true
kubectl replace -f unschedule_node.yaml

或不用配置文件 kubectl patch node k8s-nod1 -p ‘{“spec:”:{“unschedulable”:true}}’kubectl cordon k8s-nod1 注:将某node进行调度隔离时,运行在该node上的pod并不会自动停止运行,需要人为手动将pod停止 方法二:直接删除该节点: kubectl delete node k8s-nod1

2、增加节点

方法一: 恢复隔离调度的node kubectl uncordon k8s-nod1 方法二: 增加新的物理node机到k8s集群中,操作看上面的步骤: 四、安装配置NODE 注意: 1.rhsm 证书(节点拉取镜像) node需下载http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

06-12 21:22