此處僅有兩臺服務器,一臺master節點,一臺node節點,后期可按照步驟繼續增加node節點
1. 搭建環境
- Master節點:
CPU : 2核、記憶體 :2GiB、 作業系統:Centos7.6 64位、 帶寬:1Mbps
服務器公網IP:** 、 私有IP:** - Node節點:
CPU : 2核、記憶體 :4GiB、 作業系統:Centos7.6 64位、 帶寬:1Mbps
服務器公網IP:** 、 私有IP:** - 集群版本:
k8s=v1.15.0 、docker=docker-ce-18.06.1.ce-3.el7 、etcd=3.3.10、 dashboard=v1.10.1、flannel=v0.11.0-amd64、coreDns= 1.3.1、pause=3.1
2. 安裝步驟
2.1 需要在每一個節點上進行的操作
2.1.1 提前準備
在K8s中為了高效運行,整個集群的機器需要關閉防火墻、SWAP磁區以及Selinux,使用如下命令:
#關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
# 暫時關閉SWAP磁區
swapoff -a
# 永久禁用SWAP磁區
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 禁用Selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
將系統中橋接的IPv4以及IPv6的流量串通:
cat >/etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
2.1.2 安裝Docker
這里我們使用阿里云的鏡像,首先下載阿里云鏡像倉庫描述檔案:
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
如果沒有wget命令請使用:yum -y install wget進行安裝
然后指定Docker版本進行安裝:
yum -y install docker-ce-18.06.1.ce-3.el7
開啟Docker的服務以及安裝:
systemctl enable docker && systemctl start docker
docker --version
此時應該能得到如下的情況的驗證:

在K8S中建議Docker與K8S使用的Cgroupdriver值為 “systemd”,所以每一個節點還需要進行如下的修改 :
## Create /etc/docker directory.
mkdir /etc/docker
# Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# Restart Docker
systemctl daemon-reload
systemctl restart docker
2.1.3 安裝Kubernetes的安裝組件
在安裝k8s之前也需要加上yum源:
vi /etc/yum.repos.d/kubernetes.repo
# 在這個檔案中輸入
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enable=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
指定版本進行kubeadm、kubelet、kubectl的安裝:
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
此時應該會得到如下描述的界面:

然后開啟kubelet服務:
systemctl enable kubelet.service
2.2 需要在Master上操作
注意需要自己填寫的地方,可以根據自己的情況進行修改,然后基于我的運行情況就是,執行如下命令:
kubeadm init \
--apiserver-advertise-address= 此處為master節點的公網ip\
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
–apiserver-advertise-address string API 服務器所公布的其正在監聽的 IP 地址,如果未設定,則使用默認網路介面, 默認設定位master節點ip地址 –pod-network-cidr string
通過這個值來設定pod網路的IP地址網段;設定了這個值以后,控制平面會自動給每個節點設定CIDRs(無類別域間路由,Classless
Inter-Domain Routing),默認為10.1.0.0/16 –service-cidr string Default:
“10.96.0.0/12” 設定service的CIDRs,默認為 10.96.0.0/12,
因為阿里云ecs里沒有配置公網ip,etcd無法啟動,所以kubeadm在初始化會出現”timeout“的錯誤,
解決辦法:
-
建立兩個ssh對話,即用ssh工具新建兩個標簽,一個用來初始化節點,另一個在初始化程序中修改組態檔, 注意是初始化程序中,每次運行kubeadm init,kubeadm都會生成etcd的組態檔,如果提前修改了組態檔,在運行kubeadm init時會把修改的結果覆寫,那么也就沒有作用了,

-
運行”kubeadm init …“上述的初始化命令,此時會卡在
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed
- 在輸入上述命令后,kubeadm即開始了master節點的初始化,但是由于etcd組態檔不正確,所以etcd無法啟動,要對該檔案進行修改,
檔案路徑"/etc/kubernetes/manifests/etcd.yaml",
修改前:

修改后:

此處"xxx"為公網ip,要關注的是"–listen-client-urls"和"–listen-peer-urls",需要把"–listen-client-urls"后面的公網ip洗掉,把"–listen-peer-urls"改為本地的地址,
- 稍等后master節點初始化就會完成
注意、注意
在這個部分安裝完成后,會得到一個如下的token,這個在后面node加入master要用的,

轉到node節點視窗,通過”kubeadm join…"命令將node節點加入到master集群中,
master節點完成初始化后以及node節點加入后,通過閱讀終端資訊,我們還需執行幾個命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用下述命令可查看集群中節點情況
kubectl get node
但是會查看到master節點和node節點都是NotReady狀態, 因為在K8S中,整個系統處于一個扁平的網路之下,其中在谷歌內部的網路架構中,這個是天然存在的,但是在我們自己的環境里這個需要設定,
所以下一步就是部署網路環境,此處我們使用的就是由Centos開發的flannel網路組件,
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
其中需要在master節點和node節點都安裝flannel插件,
使用“kubectl get node”可查看所有節點都處于ready狀態了

使用“kubectl get pods --all-namespaces”可查看所有Pod都在running狀態

此處為止,k8s集群基本安裝已完成
2.3 安裝dashboard(k8s集群的web ui)
因dashboard的安裝為非硬性要求,所以整個安裝步驟可參考下述地址
https://www.cnblogs.com/wucaiyun1/p/11692204.html
目前已在master節點(47服務器)安裝好了dashboard,因為證書原因只能在火狐瀏覽器上進行查看,通過訪問https://master節點IP:30001/

此處以令牌登錄為例,后期若有需求可使用kubeconfig進行登錄
在master節點中輸入命令獲取token登錄:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard | awk '{print $1}')

將token輸入登錄

本文中有部分內容來源于其他文章,因記錄該筆記的時間較為久遠,忘了用到哪些文章,如有侵權,請聯系本人洗掉該內容或加入文章參考鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254051.html
標籤:其他
