摘要:集群安裝在節(jié)點(diǎn)上并準(zhǔn)備一個(gè)虛擬來(lái)做。節(jié)點(diǎn)集群?jiǎn)?dòng)前的準(zhǔn)備請(qǐng)用用戶執(zhí)行節(jié)點(diǎn)準(zhǔn)備工作在每臺(tái)機(jī)器上執(zhí)行包括修改主機(jī)名,關(guān)閉防火墻等操作。關(guān)閉防火墻是為了避免不必要的網(wǎng)絡(luò)問(wèn)題。完了可以使用查看集群是否安裝完成。
前面我們安裝了一個(gè)簡(jiǎn)單的kubernetes集群,選用了1個(gè)master節(jié)點(diǎn)和三個(gè)node節(jié)點(diǎn)。etcd也沒有安裝成集群.
這次我們安裝一個(gè)3個(gè)master節(jié)點(diǎn)+etcd集群的kubernetes集群.
本次選用三個(gè)master節(jié)點(diǎn),三個(gè)node節(jié)點(diǎn)來(lái)安裝k8s集群。
etcd集群安裝在master節(jié)點(diǎn)上.
并準(zhǔn)備一個(gè)虛擬ip來(lái)做keepalived。
節(jié)點(diǎn) | 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
包括修改主機(jī)名,關(guān)閉防火墻等操作?! ?br>k8s集群會(huì)識(shí)別主機(jī)名字,確保每個(gè)主機(jī)名設(shè)為不同值。
關(guān)閉防火墻是為了避免不必要的網(wǎng)絡(luò)問(wèn)題?! ?/p>
# ${hostname}變量請(qǐng)?zhí)鎿Q成規(guī)劃的主機(jī)名,比如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命令快速建立,也可以自己手動(dòng)建立。這個(gè)網(wǎng)上教程很多,自己搜一下
安裝docker(在每臺(tái)機(jī)器上執(zhí)行)yum install docker -y systemctl enable docker && systemctl start docker
修改docker的log driver為json-file,這個(gè)不影響安裝,只是為了后期安裝efk日志收集系統(tǒng)方便。
docker info可以查看當(dāng)前l(fā)og driver,centos7默認(rèn)使用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(每臺(tái)機(jī)器上執(zhí)行)
kubeadm: 快速創(chuàng)建k8s集群的工具
kubelet: k8s的基礎(chǔ)組件,負(fù)責(zé)對(duì)pod和container的創(chuàng)建和管理,與k8s集群master建立聯(lián)系
kubectl: k8s的客戶端工具,用來(lái)像集群發(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)上安裝時(shí),由于iptables被繞過(guò)導(dǎo)致路由錯(cuò)誤,需要在
sysctl的config文件中將net.bridge.bridge-nf-call-iptables設(shè)置為1.
cat </etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
啟動(dòng)kubelet:
systemctl enable kubelet && systemctl start kubelet
至此,準(zhǔn)備工作就做好了。目前每隔幾秒kubelet就會(huì)重啟,直到收到kubeadm的命令?! ?br>所以用systemctl status kubelet看到kubelet沒有啟動(dòng)是正?,F(xiàn)象,可以多執(zhí)行幾次查看,就會(huì)發(fā)現(xiàn)kubelet處于不斷停止和重啟的狀態(tài).
安裝etcd集群(在三個(gè)master節(jié)點(diǎn)安裝) 創(chuàng)建etcd CA證書
安裝cfssl和sfssljson
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é)點(diǎn)(我這里規(guī)劃的是master0節(jié)點(diǎn)),執(zhí)行下面命令
執(zhí)行完成可以看到/etc/kubernetes/pki/etcd文件夾下生成了ca-config.json和ca-csr.json兩個(gè)文件
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é)點(diǎn)執(zhí)行以下操作,會(huì)生成兩個(gè)文件client.pem, client-key.pem
cat >client.json <生成etcd的server和peer證書
設(shè)置PEER_NAME和PRIVATE_IP環(huán)境變量(在每臺(tái)etcd機(jī)器上執(zhí)行)
# 注意下面ens192是你實(shí)際網(wǎng)卡的名字,有可能是eth1之類的。用ip addr查看。 export PEER_NAME=$(hostname) export PRIVATE_IP=$(ip addr show ens192 | grep -Po "inet K[d.]+")
將剛剛在etcd上生成的CA拷貝到另外兩臺(tái)etcd機(jī)器上(在兩臺(tái)etch peers上執(zhí)行)。
這里需要ssh信任權(quán)限,這個(gè)在上面已經(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機(jī)器上執(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啟動(dòng)etcd集群(在每臺(tái)etcd機(jī)器上執(zhí)行)這里有兩種方式:在虛擬機(jī)上直接運(yùn)行或在k8s上運(yùn)行static pods.我這里選用第一種,在虛擬機(jī)上直接運(yùn)行.
安裝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)境文件,后面將會(huì)用到
touch /etc/etcd.env echo "PEER_NAME=$PEER_NAME" >> /etc/etcd.env echo "PRIVATE_IP=$PRIVATE_IP" >> /etc/etcd.env
創(chuàng)建etcd服務(wù)systemd的配置文件
注意修改下面等變量為虛擬機(jī)的真實(shí)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
啟動(dòng)etcd集群
systemctl daemon-reload systemctl start etcd設(shè)置master節(jié)點(diǎn)的負(fù)載均衡器(keepalived,在三臺(tái)master節(jié)點(diǎn)上執(zhí)行)
安裝keepalived
yum install keepalived -y
修改配置文件
state: 填寫MASTER(主master節(jié)點(diǎn)m0)或BACKUP(其他master節(jié)點(diǎn))
interface: 填寫網(wǎng)卡的名字(我這里是ens192)
priority: 權(quán)重,主master節(jié)點(diǎn)應(yīng)該比其他節(jié)點(diǎn)高(比如m0填寫101,其他節(jié)點(diǎn)填寫100)
auth_pass: 任意隨機(jī)字符
virtual_ipaddress: 應(yīng)該填寫為master節(jié)點(diǎn)準(zhǔn)備的虛擬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 { stateinterface virtual_router_id 51 priority authentication { auth_type PASS auth_pass 4be37dc3b4c90194d1600c483e10ad1d } virtual_ipaddress { } track_script { check_apiserver } }
健康檢測(cè)腳本
將下面的替換成準(zhǔn)備的虛擬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
啟動(dòng)keepalived
systemctl start keepalived啟動(dòng)k8s集群 啟動(dòng)master0節(jié)點(diǎn)
生成配置文件:
: 為master節(jié)點(diǎn)的IP地址
, , : etcd集群的ip地址
:POD CIDR,k8s的pod的網(wǎng)絡(luò)模式。我這里選擇flannel,即配置 為10.244.0.0/16。詳細(xì)信息查看CNI network section 為了安裝flannel,需要在每臺(tái)機(jī)器上執(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
運(yùn)行kubeadm
kubeadm init --config=config.yaml啟動(dòng)master1, master2節(jié)點(diǎn)
將剛剛master0生成的文件copy到master1和master2機(jī)器
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 重復(fù)master0的操作,生成config.yaml,運(yùn)行kubeadm.
安裝CNI網(wǎng)絡(luò)這里跟上面
那里設(shè)置的要對(duì)應(yīng)起來(lái)。我這里選用的是Flannel,執(zhí)行下面命令。
官網(wǎng)詳解Installing a pod networkkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml加入node節(jié)點(diǎn)在每臺(tái)node機(jī)器上執(zhí)行以下格式的命令,在master節(jié)點(diǎn)執(zhí)行完kubeadm init后會(huì)生成下面命令,復(fù)制執(zhí)行就好。
這里統(tǒng)一將node加入到master0管理中。kubeadm join --token: --discovery-token-ca-cert-hash sha256: 完了可以使用kubectl get nodes查看集群是否安裝完成。
kubernetes 官方文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/32650.html
摘要:集群安裝在節(jié)點(diǎn)上并準(zhǔn)備一個(gè)虛擬來(lái)做。節(jié)點(diǎn)集群?jiǎn)?dòng)前的準(zhǔn)備請(qǐng)用用戶執(zhí)行節(jié)點(diǎn)準(zhǔn)備工作在每臺(tái)機(jī)器上執(zhí)行包括修改主機(jī)名,關(guān)閉防火墻等操作。關(guān)閉防火墻是為了避免不必要的網(wǎng)絡(luò)問(wèn)題。完了可以使用查看集群是否安裝完成。 前面我們安裝了一個(gè)簡(jiǎn)單的kubernetes集群,選用了1個(gè)master節(jié)點(diǎn)和三個(gè)node節(jié)點(diǎn)。etcd也沒有安裝成集群. 這次我們安裝一個(gè)3個(gè)master節(jié)點(diǎn)+etcd集群的kub...
摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 單個(gè)master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因?yàn)槟_本用的相...
摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 單個(gè)master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因?yàn)槟_本用的相...
摘要:使用安裝安全高可用集群安裝包地址如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 使用kubeadm安裝安全高可用kubernetes集群 安裝包地址 如非高可用安裝請(qǐng)忽略此教程,直接看產(chǎn)品頁(yè)的三步安裝。 單個(gè)master流程: 單master視頻教程 解壓后在master 上 cd shell && sh init.sh ,然后sh master.sh(注意因?yàn)槟_本用的相...
閱讀 1125·2021-11-16 11:42
閱讀 2905·2021-10-12 10:18
閱讀 2864·2021-09-24 09:48
閱讀 3466·2019-08-30 15:56
閱讀 1530·2019-08-30 14:17
閱讀 3049·2019-08-29 12:14
閱讀 912·2019-08-27 10:51
閱讀 2030·2019-08-26 13:28