中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes1.12 二進制集群搭建

發布時間:2020-07-13 13:57:21 來源:網絡 閱讀:2128 作者:蔣將將 欄目:云計算

一、環境準備

1.1、系統環境

主機名

系統

IP

組件

master01

CentOS7.4

172.169.18.223

etcd

kube-apiserver

kube-controller-manager

kube-scheduler

node01

CentOS7.4

172.169.18.230

etcd

kubelet

kube-proxy

docker

node02

CentOS7.4

172.169.18.232

etcd

kubelet

kube-proxy

docker

1.2、關閉swap

# swapoff -a

# sed -i 's/.*swap.*/#&/' /etc/fstab

1.3、關閉防火墻和selinux

1.4、配置轉發參數

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.ipv4.ip_forward = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

# sysctl --system

1.5、下載安裝包

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#downloads-for-v1122

Kubernetes1.12 二進制集群搭建

Kubernetes1.12 二進制集群搭建

二、搭建服務

1、上傳安裝包到服務器

kubernetes-server-linux-amd64.tar.gz上傳到master節點

kubernetes-node-linux-amd64.tar.gz 上傳到node節點

2、安裝etcd服務(三個節點的集群)

[root@master01 ~]# yum install etcd –y

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

#修改如下配置文件:

# vim /etc/etcd/etcd.conf

#maser01節點

ETCD_DATA_DIR="/var/lib/etcd/"

ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://127.0.0.1:4001"

ETCD_NAME="master01"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_INITIAL_CLUSTER="master01=http://172.169.18.223:2380,node01=http://172.169.18.230:2380,node02=http://172.169.18.232:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

#node01節點

ETCD_DATA_DIR="/var/lib/etcd"

ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://127.0.0.1:4001"

ETCD_NAME="node01"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_INITIAL_CLUSTER="master01=http://172.169.18.223:2380,node01=http://172.169.18.230:2380,node02=http://172.169.18.232:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

#node02

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"

ETCD_NAME="node02"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_INITIAL_CLUSTER="master01=http://172.169.18.223:2380,node01=http://172.169.18.230:2380,node02=http://172.169.18.232:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

按如上配置分別啟動集群,啟動集群后,將會進入集群選舉狀態,若出現大量超時,則需要檢查主機的防火墻是否關閉,或主機之間是否能通過2380端口通信,集群建立后通過以下命令檢查集群狀態。

3)在任意節點查看集群狀態

# etcdctl member list

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

當關閉node01節點后,選舉自動切換到node02上

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

4)檢查集群健康狀態(在三個節點中的任意一個上面都可以查看)

# etcdctl cluster-health

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

到此,etcd集群搭建完畢!!!

3、運行Master節點組件

3.1、解壓,復制配置文件

[root@master01 opt]# tar -zxvf kubernetes-server-linux-amd64.tar.gz

[root@master01 opt]# mkdir -p /opt/kubernetes/{bin,cfg}

[root@master01 opt]# mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin

3.2、apiserver服務

(1)配置文件

[root@master01 opt]# cat /opt/kubernetes/cfg/kube-apiserver

#日志級別

KUBE_LOG_LEVEL="--v=4"

#Etcd服務地址

KUBE_ETCD_SERVERS="--etcd-servers=http://172.169.18.223:2379"

#API服務監聽地址

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

#API服務監聽端口

KUBE_API_PORT="--insecure-port=8080"

#對集群中成員提供API服務地址

KUBE_ADVERTISE_ADDR="--advertise-address=172.169.18.223"

#允許容器請求特權模式,默認false

KUBE_ALLOW_PRIV="--allow-privileged=false"

#集群分配的IP范圍,自定義但是要跟后面的kubelet(服務節點)的配置DNS在一個區間

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.169.0.0/16"

(2)創建systemd服務文件:

cat >/lib/systemd/system/kube-apiserver.service<<EOF

[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}

ExecStart=/opt/kubernetes/bin/kube-apiserver \

\${KUBE_LOGTOSTDERR} \

\${KUBE_LOG_LEVEL} \

\${KUBE_ETCD_SERVERS} \

\${KUBE_API_ADDRESS} \

\${KUBE_API_PORT} \

\${KUBE_ADVERTISE_ADDR} \

\${KUBE_ALLOW_PRIV} \

\${KUBE_SERVICE_ADDRESSES}

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

(3)啟動服務,并設置開機啟動:

[root@master01 opt]# systemctl daemon-reload

[root@master01 opt]# systemctl enable kube-apiserver.service

[root@master01 opt]# systemctl start kube-apiserver.service

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

注意:apiserver默認支持etcd3,如果是etcd2,需啟動時指定版本選項--storage-backend=etcd2

3.3、scheduler服務

(1)創建配置文件

cat >/opt/kubernetes/cfg/kube-scheduler <<EOF

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=4"

KUBE_MASTER="--master=172.169.18.223:8080"

KUBE_LEADER_ELECT="--leader-elect"

EOF

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建


(2)創建服務器啟動文件

[root@master01 opt]# cat>/lib/systemd/system/kube-scheduler.service<<EOF

[Unit]

Description=Kubernetes Scheduler

Documentation=https://github.com/kubernetes/kubernetes

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler

ExecStart=/opt/kubernetes/bin/kube-scheduler \

\${KUBE_LOGTOSTDERR} \

\${KUBE_LOG_LEVEL} \

\${KUBE_MASTER} \

\${KUBE_LEADER_ELECT}

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

啟動服務

[root@master01 opt]# systemctl daemon-reload

[root@master01 opt]# systemctl enable kube-scheduler.service

[root@master01 opt]# systemctl start kube-scheduler.service  

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

3.4、contorller-manager服務

(1)創建文件

cat > /opt/kubernetes/cfg/kube-controller-manager<<EOF

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=4"

KUBE_MASTER="--master=172.169.18.223:8080"

EOF

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

(2)創建系統啟動文件

cat > /lib/systemd/system/kube-controller-manager.service<<EOF

[Unit]

Description=Kubernetes Controller Manager

Documentation=https://github.com/kubernetes/kubernetes

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager

ExecStart=/opt/kubernetes/bin/kube-controller-manager \

\${KUBE_LOGTOSTDERR} \

\${KUBE_LOG_LEVEL} \

\${KUBE_MASTER} \

\${KUBE_LEADER_ELECT}

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

啟動服務

[root@master01 opt]# systemctl daemon-reload

[root@master01 opt]# systemctl enable kube-controller-manager.service

[root@master01 opt]# systemctl start kube-controller-manager.service

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

3.5、kubelet服務

(1)kubelet.kubeconfig配置文件

# vim /opt/kubernetes/cfg/kubelet.kubeconfig

apiVersion: v1

kind: Config

clusters:

- cluster:

server: http://172.169.18.223:8080

name: local

contexts:

- context:

cluster: local

name: local

current-context: local

(2)kubelet配置文件

# vim /opt/kubernetes/cfg/kubelet

# 啟用日志標準錯誤

KUBE_LOGTOSTDERR="--logtostderr=true"

# 日志級別

KUBE_LOG_LEVEL="--v=4"

# Kubelet服務IP地址

NODE_ADDRESS="--address=172.169.18.223"

# Kubelet服務端口

NODE_PORT="--port=10250"

# 自定義節點名稱

NODE_HOSTNAME="--hostname-override=172.169.18.223"

# kubeconfig路徑,指定連接API服務器

KUBELET_KUBECONFIG="--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig"

# 允許容器請求特權模式,默認false

KUBE_ALLOW_PRIV="--allow-privileged=false"

# DNS信息

KUBELET_DNS_IP="--cluster-dns=172.169.18.2"

KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"

# 禁用使用Swap

KUBELET_SWAP="--fail-swap-on=false"

(3)kubelet systemd配置文件

[root@master ~]# vim /usr/lib/systemd/system/kubelet.service

[Unit]

Description=Kubernetes Kubelet

After=docker.service

Requires=docker.service

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kubelet

${KUBE_LOGTOSTDERR} \

${KUBE_LOG_LEVEL} \

${NODE_ADDRESS} \

${NODE_PORT} \

${NODE_HOSTNAME} \

${KUBELET_KUBECONFIG} \

${KUBE_ALLOW_PRIV} \

${KUBELET_DNS_IP} \

${KUBELET_DNS_DOMAIN} \

${KUBELET_SWAP}

Restart=on-failure

KillMode=process

[Install]

WantedBy=multi-user.target

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

(4)啟動服務

[root@master ~]# systemctl enable kubelet

[root@master ~]# systemctl start kubelet

至此master就已經配置完成,如若配置中有錯誤,可以通過#journalctl -u 服務名稱查看報錯。

為方便使用添加環境變量

[root@master01 opt]# echo "export PATH=\$PATH:/opt/kubernetes/bin" >> /etc/profile

[root@master01 opt]# source /etc/profile

3、小結

Master節點組件就全部啟動了,需要注意的是服務啟動順序有依賴,先啟動etcd,再啟動apiserver,其他組件無順序要求。

查看Master節點組件進程狀態:

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建


4、node節點(docker1.18環境)

#yum install -y yum-utils device-mapper-persistent-data lvm2

4.1、解決復制

[root@node01 opt]# tar -zxvf kubernetes-node-linux-amd64.tar.gz

[root@node01 opt]# mkdir -p /opt/kubernetes/{bin,cfg}

[root@node01 opt]# mv kubernetes/node/bin/{kubelet,kube-proxy} /opt/kubernetes/bin/

4.2、kubelet服務

(1)創建kubeconfig配置文件:

[root@node01 opt]# vim /opt/kubernetes/cfg/kubelet.kubeconfig

apiVersion: v1

kind: Config

clusters:

- cluster:

server: http://172.169.18.223:8080

name: local

contexts:

- context:

cluster: local

name: local

current-context: local

備注:kubeconfig文件用于kubelet連接master apiserver。

(2)創建配置文件:

[root@slave2 opt]# cat /opt/kubernetes/cfg/kubelet

# 啟用日志標準錯誤

KUBE_LOGTOSTDERR="--logtostderr=true"

# 日志級別

KUBE_LOG_LEVEL="--v=4"

# Kubelet服務IP地址

NODE_ADDRESS="--address=172.169.18.230"

# Kubelet服務端口

NODE_PORT="--port=10250"

# 自定義節點名稱

NODE_HOSTNAME="--hostname-override=172.169.18.230"

# kubeconfig路徑,指定連接API服務器

KUBELET_KUBECONFIG="--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig"

# 允許容器請求特權模式,默認false

KUBE_ALLOW_PRIV="--allow-privileged=false"

# DNS信息

KUBELET_DNS_IP="--cluster-dns=172.169.18.2"

KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"

# 禁用使用Swap

KUBELET_SWAP="--fail-swap-on=false"

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

(3)創建systemd服務文件

cat>/lib/systemd/system/kubelet.service<<EOF

[Unit]

Description=Kubernetes Kubelet

After=docker.service

Requires=docker.service

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kubelet

ExecStart=/opt/kubernetes/bin/kubelet \

\${KUBE_LOGTOSTDERR} \

\${KUBE_LOG_LEVEL} \

\${NODE_ADDRESS} \

\${NODE_PORT} \

\${NODE_HOSTNAME} \

\${KUBELET_KUBECONFIG} \

\${KUBE_ALLOW_PRIV} \

\${KUBELET_DNS_IP} \

\${KUBELET_DNS_DOMAIN} \

\${KUBELET_SWAP}

Restart=on-failure

KillMode=process

[Install]

WantedBy=multi-user.target

EOF

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

(4)啟動服務

[root@node01 ~]# systemctl daemon-reload

[root@node01 ~]# systemctl enable kubelet.service

[root@node01 ~]# systemctl start kubelet.service

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

4.3、kube-proxy服務

(1)創建配置文件

[root@node01 cfg]# vim kube-proxy

# 啟用日志標準錯誤

KUBE_LOGTOSTDERR="--logtostderr=true"

# # 日志級別

KUBE_LOG_LEVEL="--v=4"

# # 自定義節點名稱

NODE_HOSTNAME="--hostname-override=172.169.18.230"

# # API服務地址

KUBE_MASTER="--master=http://172.169.18.223:8080"

(2)創建systemd服務文件

[root@node01 ]# cat /lib/systemd/system/kube-proxy.service

[Unit]

Description=Kubernetes Proxy

After=network.target

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy

ExecStart=/opt/kubernetes/bin/kube-proxy \

${KUBE_LOGTOSTDERR} \

${KUBE_LOG_LEVEL} \

${NODE_HOSTNAME} \

${KUBE_MASTER}

Restart=on-failure

[Install]

WantedBy=multi-user.target

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

啟動服務

[root@node01 ~]# systemctl daemon-reload

[root@node01 ~]# systemctl enable kube-proxy.service

[root@node01 ~]# systemctl start kube-proxy.service

4、小結

 其他節點加入集群與node01方式相同,但需修改kubelet的--address和--hostname-override選項為本機IP即可。

查看狀態

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

說明組件都在運行。

如果啟動失敗,請查看啟動日志,例如:

#journalctl -u kubelet


三、安裝flannel服務搭建(3個節點)

3.1、安裝Flannel服務

1)yum安裝flannel

# yum install flannel -y

2)配置flannel文件

# cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld_bak

# vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://172.169.18.223:2379,http://172.169.18.230:2379,http://172.169.18.232:2379"

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

3)配置etcd中關于flannel的key(只能在etcd節點上操作)

Flannel使用Etcd進行配置,來保證多個Flannel實例之間的配置一致性,所以需要在etcd上進行如下配置('/atomic.io/network/config'這個key與上面的/etc/sysconfig/flannel中的配置項FLANNEL_ETCD_PREFIX是相對應的,錯誤的話啟動就會出錯):

# etcdctl mkdir /atomic.io/network

# etcdctl mk /atomic.io/network/config '{ "Network": "192.169.0.0/16" }'

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

備注:該ip網段可以任意設定,隨便設定一個網段都可以。容器的ip就是根據這個網段進行自動分配的,ip分配后,容器一般是可以對外聯網的(網橋模式,只要宿主機能上網就可以)

4)配置docker啟動文件

# vim /usr/lib/systemd/system/docker.service

#添加如下參數

EnvironmentFile=-/etc/sysconfig/flanneld

EnvironmentFile=-/run/flannel/subnet.env

ExecStart=/usr/bin/dockerd --bip=${FLANNEL_SUBNET}

保持,重啟docker服務

5)啟動服務

[root@master ~]# systemctl start flanneld.service

[root@master ~]# systemctl enable flanneld.service

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

重啟docker

# systemctl restart docker

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

3、在node01和node02節點配置

3.1、安裝Flannel服務

1)yum安裝flannel

# yum install flannel -y

2)配置flannel文件

# cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld_bak

# vim /etc/sysconfig/flanneld

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

34)配置docker啟動文件

# vim /usr/lib/systemd/system/docker.service

#添加如下參數

EnvironmentFile=-/etc/sysconfig/flanneld

EnvironmentFile=-/run/flannel/subnet.env

ExecStart=/usr/bin/dockerd --bip=${FLANNEL_SUBNET}

保持,重啟docker服務

4)啟動服務

[root@slave1 ~]# systemctl start flanneld.service

[root@slave1 ~]# systemctl enable flanneld.service

重啟docker,獲取分配的ip段

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

4、查看宿主獲取的IP段

# ps aux|grep docker|grep "bip"

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

“bip=192.169.4.1/24”這個參數,它限制了所在節點容器獲得的IP范圍。 該IP范圍是由Flannel自動分配的,由Flannel通過保存在Etcd服務中的記錄確保它們不會重復。


Kubernetes1.12 二進制集群搭建

5、驗證集群是否部署成功

# kubectl get nodes

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建

# kubectl get cs

Kubernetes1.12 二進制集群搭建Kubernetes1.12 二進制集群搭建


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳普湖县| 巨野县| 定结县| 宁夏| 丹东市| 怀集县| 治县。| 四子王旗| 西贡区| 榆中县| 麻城市| 阜南县| 民勤县| 甘南县| 潮州市| 玉屏| 灵璧县| 三门峡市| 商南县| 元朗区| 杭锦后旗| 祁门县| 綦江县| 蒙山县| 三亚市| 卓尼县| 合江县| 竹溪县| 盱眙县| 交口县| 教育| 惠州市| 界首市| 同仁县| 齐河县| 象山县| 金昌市| 永定县| 贵德县| 安义县| 蒙自县|