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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章