单节点安装步骤
一、环境
一台安装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