RedHat7.2安装和配置单节点或多节点kubernetes

本文将讲述RedHat7.2如何安装和部署(单节/多节点)kubernetes。
注: 由于Redhat是商业系统,需注册才可用yum进行软件安装,但是我们可以通过修改yum为Centos源,具体操作

单节点


一、环境

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

二、准备工作

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

systemctl disable firewalld
systemctl stop firewalld

三、安装和配置

1、安装etcdkubernetes

yum -y install etcd kubernetes

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

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

KUBE_ADMISSION_CONTROL选项中的ServiceAccount删除掉

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

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

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

vi /etc/sysconfig/docker

把docker配置文件设置如下

OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --registry-mirror=http://a258bd15.m.daocloud.io'

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、设置hostname(主机名)

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

hostnamectl set-hostname 主机名

Role IP HostName
Master 192.168.100.50 k8s-mst
Node 192.168.100.51 k8s-nod1
Node 192.168.100.52 k8s-nod2

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加速器

参考前面的单节点docker加速设置章节

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

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

# file name: k8s-mst.sh

for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do  
    systemctl restart $SERVICE  
    systemctl enable $SERVICE  
done  

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

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

可以通过ps -ef | grep kube来查看服务是否启动成功

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 flannel

查看安装的版本

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=enp0s3"

注: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加速器

参考前面的单节点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.yaml
apiVersion: 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

发布了58 篇原创文章 · 获赞 100 · 访问量 40万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章