成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

kubernetes1.9高可用集群安裝(使用kubeadm工具)

codecraft / 2696人閱讀

摘要:集群安裝在節(jié)點上并準備一個虛擬來做。節(jié)點集群啟動前的準備請用用戶執(zhí)行節(jié)點準備工作在每臺機器上執(zhí)行包括修改主機名,關閉防火墻等操作。關閉防火墻是為了避免不必要的網(wǎng)絡問題。完了可以使用查看集群是否安裝完成。

前面我們安裝了一個簡單的kubernetes集群,選用了1個master節(jié)點和三個node節(jié)點。etcd也沒有安裝成集群.
這次我們安裝一個3個master節(jié)點+etcd集群的kubernetes集群.

節(jié)點規(guī)劃

本次選用三個master節(jié)點,三個node節(jié)點來安裝k8s集群。 
etcd集群安裝在master節(jié)點上.
并準備一個虛擬ip來做keepalived。  

節(jié)點 IP
M0 10.xx.xx.xx
M1 10.xx.xx.xx
M2 10.xx.xx.xx
N0 10.xx.xx.xx
N1 10.xx.xx.xx
N2 10.xx.xx.xx

virtual_ipaddress: 10.xx.xx.xx


集群啟動前的準備(請用root用戶執(zhí)行) 節(jié)點準備工作(在每臺機器上執(zhí)行)

包括修改主機名,關閉防火墻等操作?! ?br>k8s集群會識別主機名字,確保每個主機名設為不同值?! ?br>關閉防火墻是為了避免不必要的網(wǎng)絡問題?! ?/p>

# ${hostname}變量請?zhí)鎿Q成規(guī)劃的主機名,比如M0, N0, N1
sudo hostnamectl set-hostname ${hostname}
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i -re "/^s*SELINUX=/s/^/#/" -e "$iSELINUX=disabled"  /etc/selinux/config

建立ssh的互信,方便后面?zhèn)魑募裁吹???梢允褂?b>ssh-copy-id命令快速建立,也可以自己手動建立。這個網(wǎng)上教程很多,自己搜一下

安裝docker(在每臺機器上執(zhí)行)
yum install docker -y
systemctl enable docker && systemctl start docker

修改docker的log driver為json-file,這個不影響安裝,只是為了后期安裝efk日志收集系統(tǒng)方便。
docker info可以查看當前l(fā)og driver,centos7默認使用journald.
不同版本的docker可能修改方式不一樣,最新官網(wǎng)文檔是修改/etc/docker/daemon.json文件,我安裝的版本是1.12.6,按如下方式修改。

vim /etc/sysconfig/docker

# 修改為如下,然后重啟docker
OPTIONS="--selinux-enabled --log-driver=json-file --signature-verification=false"
systemctl restart docker
安裝kubeadm, kubelet, kubectl(每臺機器上執(zhí)行)

kubeadm: 快速創(chuàng)建k8s集群的工具

kubelet: k8s的基礎組件,負責對pod和container的創(chuàng)建和管理,與k8s集群master建立聯(lián)系

kubectl: k8s的客戶端工具,用來像集群發(fā)送命名

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl

官網(wǎng)文檔上寫一些用戶在RHEL/Centos7系統(tǒng)上安裝時,由于iptables被繞過導致路由錯誤,需要在
sysctl的config文件中將net.bridge.bridge-nf-call-iptables設置為1.

cat <  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

啟動kubelet:

systemctl enable kubelet && systemctl start kubelet

至此,準備工作就做好了。目前每隔幾秒kubelet就會重啟,直到收到kubeadm的命令?! ?br>所以用systemctl status kubelet看到kubelet沒有啟動是正?,F(xiàn)象,可以多執(zhí)行幾次查看,就會發(fā)現(xiàn)kubelet處于不斷停止和重啟的狀態(tài).

安裝etcd集群(在三個master節(jié)點安裝) 創(chuàng)建etcd CA證書

安裝cfsslsfssljson

curl -o /usr/local/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
curl -o /usr/local/bin/cfssljson   https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x /usr/local/bin/cfssl*

ssh到etcd0節(jié)點(我這里規(guī)劃的是master0節(jié)點),執(zhí)行下面命令
執(zhí)行完成可以看到/etc/kubernetes/pki/etcd文件夾下生成了ca-config.json和ca-csr.json兩個文件

mkdir -p /etc/kubernetes/pki/etcd
cd /etc/kubernetes/pki/etcd

cat >ca-config.json <ca-csr.json <

生成ca證書

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

生成etcd客戶端證書

在etcd0節(jié)點執(zhí)行以下操作,會生成兩個文件client.pem, client-key.pem

cat >client.json <
生成etcd的server和peer證書

設置PEER_NAME和PRIVATE_IP環(huán)境變量(在每臺etcd機器上執(zhí)行)

# 注意下面ens192是你實際網(wǎng)卡的名字,有可能是eth1之類的。用ip addr查看。
export PEER_NAME=$(hostname)
export PRIVATE_IP=$(ip addr show ens192 | grep -Po "inet K[d.]+")

將剛剛在etcd上生成的CA拷貝到另外兩臺etcd機器上(在兩臺etch peers上執(zhí)行)。
這里需要ssh信任權限,這個在上面已經(jīng)讓你建立好了。

mkdir -p /etc/kubernetes/pki/etcd
cd /etc/kubernetes/pki/etcd
scp root@:/etc/kubernetes/pki/etcd/ca.pem .
scp root@:/etc/kubernetes/pki/etcd/ca-key.pem .
scp root@:/etc/kubernetes/pki/etcd/client.pem .
scp root@:/etc/kubernetes/pki/etcd/client-key.pem .
scp root@:/etc/kubernetes/pki/etcd/ca-config.json .

在所有etcd機器上執(zhí)行下面命令,生成peer.pem, peer-key.pem, server.pem, server-key.pem

cfssl print-defaults csr > config.json
sed -i "0,/CN/{s/example.net/""$PEER_NAME""/}" config.json
sed -i "s/www.example.net/""$PRIVATE_IP""/" config.json
sed -i "s/example.net/""$PEER_NAME""/" config.json

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server config.json | cfssljson -bare server
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer config.json | cfssljson -bare peer

啟動etcd集群(在每臺etcd機器上執(zhí)行)

這里有兩種方式:在虛擬機上直接運行或在k8s上運行static pods.我這里選用第一種,在虛擬機上直接運行.

安裝etcd

cd /tmp
export ETCD_VERSION=v3.1.10
curl -sSL https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz | tar -xzv --strip-components=1 -C /usr/local/bin/
rm -rf etcd-$ETCD_VERSION-linux-amd64*

生成etcd的環(huán)境文件,后面將會用到

touch /etc/etcd.env
echo "PEER_NAME=$PEER_NAME" >> /etc/etcd.env
echo "PRIVATE_IP=$PRIVATE_IP" >> /etc/etcd.env

創(chuàng)建etcd服務systemd的配置文件
注意修改下面等變量為虛擬機的真實ip地址。m0, m1等為etcd的名字

cat >/etc/systemd/system/etcd.service <:2380,m1=https://:2380,m2=https://:2380 
    --initial-cluster-token my-etcd-token 
    --initial-cluster-state new

[Install]
WantedBy=multi-user.target
EOF

啟動etcd集群

systemctl daemon-reload
systemctl start etcd

設置master節(jié)點的負載均衡器(keepalived,在三臺master節(jié)點上執(zhí)行)

安裝keepalived

yum install keepalived -y

修改配置文件

state: 填寫MASTER(主master節(jié)點m0)或BACKUP(其他master節(jié)點)

interface: 填寫網(wǎng)卡的名字(我這里是ens192)

priority: 權重,主master節(jié)點應該比其他節(jié)點高(比如m0填寫101,其他節(jié)點填寫100)

auth_pass: 任意隨機字符

virtual_ipaddress: 應該填寫為master節(jié)點準備的虛擬ip

! Configuration File for keepalived
global_defs {
  router_id LVS_DEVEL
}

vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state 
    interface 
    virtual_router_id 51
    priority 
    authentication {
        auth_type PASS
        auth_pass 4be37dc3b4c90194d1600c483e10ad1d
    }
    virtual_ipaddress {
        
    }
    track_script {
        check_apiserver
    }
}

健康檢測腳本
將下面的替換成準備的虛擬ip

#!/bin/sh

 errorExit() {
     echo "*** $*" 1>&2
     exit 1
 }

 curl --silent --max-time 2 --insecure https://localhost:6443/ -o /dev/null || errorExit "Error GET https://localhost:6443/"
 if ip addr | grep -q ; then
     curl --silent --max-time 2 --insecure https://:6443/ -o /dev/null || errorExit "Error GET https://:6443/"
 fi

啟動keepalived

systemctl start keepalived

啟動k8s集群 啟動master0節(jié)點

生成配置文件:

: 為master節(jié)點的IP地址

, , : etcd集群的ip地址

:POD CIDR,k8s的pod的網(wǎng)絡模式。我這里選擇flannel,即配置 為10.244.0.0/16。詳細信息查看CNI network section

為了安裝flannel,需要在每臺機器上執(zhí)行sysctl net.bridge.bridge-nf-call-iptables=1

cat >config.yaml <
etcd:
  endpoints:
  - https://:2379
  - https://:2379
  - https://:2379
  caFile: /etc/kubernetes/pki/etcd/ca.pem
  certFile: /etc/kubernetes/pki/etcd/client.pem
  keyFile: /etc/kubernetes/pki/etcd/client-key.pem
networking:
  podSubnet: 
apiServerCertSANs:
- 
apiServerExtraArgs:
  apiserver-count: "3"
EOF

運行kubeadm

kubeadm init --config=config.yaml

啟動master1, master2節(jié)點

將剛剛master0生成的文件copy到master1和master2機器

scp root@:/etc/kubernetes/pki/ca.crt /etc/kubernetes/pki
scp root@:/etc/kubernetes/pki/ca.key /etc/kubernetes/pki
scp root@:/etc/kubernetes/pki/sa.key /etc/kubernetes/pki
scp root@:/etc/kubernetes/pki/sa.pub /etc/kubernetes/pki
scp root@:/etc/kubernetes/pki/front-proxy-ca.crt /etc/kubernetes/pki
scp root@:/etc/kubernetes/pki/front-proxy-ca.key /etc/kubernetes/pki
scp -r root@:/etc/kubernetes/pki/etcd /etc/kubernetes/pki

重復master0的操作,生成config.yaml,運行kubeadm.

安裝CNI網(wǎng)絡

這里跟上面那里設置的要對應起來。我這里選用的是Flannel,執(zhí)行下面命令。
官網(wǎng)詳解Installing a pod network

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
加入node節(jié)點

在每臺node機器上執(zhí)行以下格式的命令,在master節(jié)點執(zhí)行完kubeadm init后會生成下面命令,復制執(zhí)行就好。
這里統(tǒng)一將node加入到master0管理中。

kubeadm join --token  : --discovery-token-ca-cert-hash sha256:

完了可以使用kubectl get nodes查看集群是否安裝完成。

kubernetes 官方文檔

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/32650.html

相關文章

  • kubernetes1.9可用集群安裝使用kubeadm工具

    摘要:集群安裝在節(jié)點上并準備一個虛擬來做。節(jié)點集群啟動前的準備請用用戶執(zhí)行節(jié)點準備工作在每臺機器上執(zhí)行包括修改主機名,關閉防火墻等操作。關閉防火墻是為了避免不必要的網(wǎng)絡問題。完了可以使用查看集群是否安裝完成。 前面我們安裝了一個簡單的kubernetes集群,選用了1個master節(jié)點和三個node節(jié)點。etcd也沒有安裝成集群. 這次我們安裝一個3個master節(jié)點+etcd集群的kub...

    VioletJack 評論0 收藏0
  • kubernetes1.9.2基于kubeadm可用安裝教程,包含離線安裝包,支持簡單快速安裝,含

    摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 單個master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因為腳本用的相...

    explorer_ddf 評論0 收藏0
  • kubernetes1.9.2基于kubeadm可用安裝教程,包含離線安裝包,支持簡單快速安裝,含

    摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 單個master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因為腳本用的相...

    AlphaGooo 評論0 收藏0
  • kubernetes1.9.2基于kubeadm可用安裝教程,包含離線安裝包,支持簡單快速安裝,含

    摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請忽略此教程,直接看產(chǎn)品頁的三步安裝。 單個master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因為腳本用的相...

    jimhs 評論0 收藏0

發(fā)表評論

0條評論

codecraft

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<