1.安裝docker
(1)首先更新apt包資源索引
apt-get update
(2)安裝軟件包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
(3)添加Docker官方的GPG
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(4)添加Docker源
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
(5)因網站服務器在境外,故須使用代理或換源,下面首先演示如何添加代理。
編輯代理文件
vim /etc/apt/apt.conf
做如下修改
Acquire::http::proxy "http://username:password@server_ip:port/";
Acquire::https::proxy "https://username:password@server_ip:port/";
Acquire::ftp::proxy "ftp://username:password@server_ip:port/";
Acquire::socks::proxy "socks://username:password@server_ip:port/";
其中username和password是代理賬號和密碼,server_ip是代理服務器地址,port是代理服務器端口。根據自己情況填寫。
如果沒有條件使用代理,可以進行換源。
備份原有的軟件源配置文件sources.list:
cp /etc/apt/sources.list /etc/apt/sources.list.bk
修改sources.list文件
sudo vim /ect/apt/sources.list
換成阿里的鏡像源(也可自行尋找其他國內源)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
更新軟件源
sudo apt-get update
(6)安裝docker
sudo apt-get update
sudo apt-get install docker-ce=18.06.0~ce~3-0~ubuntu
2.搭建k8s集群
(1)添加GPG
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
若該命令不成功或者執行時間太長則進入其中的鏈接,下載apt-key.gpg, 然后執行如下命令:
apt-key add apt-key.gpg
(2)添加源
cat </etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
(3)下載kubelet kubeadm kubectl組件
apt-get update
apt-get install -y kubelet kubeadm kubectl
(4)使用虛擬機再完整克隆兩個Ubuntu系統,共計3個節點。
(5)配置IP
編輯/etc/network/interfaces
sudo vim /etc/network/interfaces
將文件改為如下內容(IP地址等內容自行編輯)
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.222.22
netmask 255.255.255.0
gateway 192.168.222.222
nameserver 8.8.8.8
ens33為連接名,可以通過ifconfig命令查看。
(6)三個節點選擇一個為master,其他分別為node1和node2。
在master上執行初始化命令
kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16
如提示鏡像無法下載,則需要手動下載鏡像。
通過下列命令拉取相關鏡像
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.15.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.2.18
docker pull coredns/coredns:1.3.0
通過docker tag命令來修改鏡像的標簽
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.15.0 k8s.gcr.io/kube-proxy-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.15.0 k8s.gcr.io/kube-scheduler-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.15.0 k8s.gcr.io/kube-apiserver-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.0 k8s.gcr.io/kube-controller-manager-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/coredns/coredns:1.3.0 k8s.gcr.io/coredns:1.3.0
具體版本及標簽信息根據之前的報錯提示修改。
(7)根據初始化成功信息提示的命令在master上執行部分操作。
注意,此時應切換到普通用戶。
(8)添加 k8s-node1 和 k8s-node2
在 k8s-node1 和 k8s-node2 上分別執行如下命令,將其注冊到 Cluster 中
kubeadm join --token d38a01.13sd654sdf546d80 192.168.56.105:6443
這里的 --token 來自前面 kubeadm init 輸出初始化成功后的提示,如果當時沒有記錄下來可以通過 kubeadm token list 查看。
(9)查看節點的狀態
kubectl get nodes
無論這里node1,node2是Ready,還是NotReady,都是節點加入成功了。
(10)節點ready
節點的NotReady,是因為節點需要啟動若干組件,這些組件是在 Pod 中運行,需要首先從 google 下載鏡像,我們可以通過命令查看 Pod 的狀態
kubectl get pod --all-namespaces
Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 沒有就緒,Running 才是就緒狀態。
查看 Pod 具體情況
kubectl describe pod kube-flannel-ds-v0p3x --namespace=kube-system
根據所提示的錯誤具體解決。比如在下載 image 時失敗,可以自己手動執行 docker pull 去下載這個鏡像。
問題解決后,所有 Pod 會處于 Running 狀態。
此時,所有的節點都已經 Ready,Kubernetes Cluster 創建成功。