1.在虛擬機中安裝3台centos(版本為1708)
①下載鏡像可找國內鏡像地址鏡像下載
https://www.cnblogs.com/LiLiliang/p/12090115.html
2.檢查網絡是否通暢,ping以下百度的IP地址(可在主機命令符中ping baidu.com得到解析后的IP)
*** 報錯 network is unreachable可修改ifcfg-ens3配置進行解決
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
修改ONBOOT=yes
重啟network
service network restart
檢查網絡可用
3.修改源鏡像地址
①安裝wget命令
yum -y install wget
②備份系統自帶的源鏡像地址
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
③下載阿里雲的源鏡像地址
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
④生成緩沖
yum makecache
4.安裝VMware Tools
*** 如果覺得安裝VMware-TOOLS過於麻煩,可使用Linux遠程工具(CRT或者SSH),在宿主機器上進行連接使用。實測好用很多(* ̄︶ ̄)
①點擊菜單欄–>虛擬機–>安裝VMware Tools
②在虛擬機中,以 root 身份登錄客戶機操作系統,打開終端窗口並運行ls /dev命令查看是否含有cdrom目錄
③將CD-ROM掛載到其他目錄下,一般是將/dev/cdrom 掛載到/mnt/cdrom目錄
使用ls /mnt查看是否已經含有/cdrom目錄 如果沒有則創建cdrom
mkdir cdrom
④使用命令mount -t iso9660 /dev/cdrom /mnt/cdrom將光盤掛載在/mnt/cdrom目錄,並使用命令ls /mnt/cdrom查看是否掛載成功
mount -t iso9660 /dev/cdrom /mnt/cdrom ls /mnt/cdrom
⑤將后綴名為tar.gz的文件拷貝到家目錄下,使用命令cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~,並用命令ls ~查看是否復制成功
cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~ ls ~
⑥使用命令umount /dev/cdrom解除掛載
umount /dev/cdrom
⑦進去root跟目錄下,使用命令tar -zxvf VMwareTools-9.9.3-2759765.tar.gz解壓包
tar -zxvf VMwareTools-9.9.3-2759765.tar.gz
⑧使用命令cd vmware-tools-distrib進入到解壓后的源碼文件目錄,運行vmware-install.pl文件
cd vmware-tools-distrib ./vmware-install.pl
*** 如果出現以下錯誤(“-bash: ./vmware-install.pl: /usr/bin/per: bad interpreter: No such file or directory”),表明未安裝編譯環境
安裝編譯環境
yum -y install perl gcc gcc-c++ make cmake kernel kernel-headers kernel-devel net-tools
5.關閉、禁用防火牆:
systemctl stop firewalld systemctl disable firewalld
6.禁用SELINUX(setenforce是Linux的selinux防火牆配置命令, 執行setenforce 0 表示關閉selinux防火牆):
setenforce 0
7.創建 /etc/sysctl.d/k8s.conf 文件,添加如下內容:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
使得配置文件生效
modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf
** 界面繁瑣時可reset命令進行清空界面
8.安裝docker
# step 1: 安裝必要的一些系統工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce
# Step 4: 開啟Docker服務 sudo service docker start # Step 5: 設置開機啟動 sudo systemctl enable docker
查看docker是否安裝成功
docker -v
9.配置阿里雲鏡像加速器:
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://obww7jh1.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
10.安裝 kubelet kubeadm kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum install -y kubelet kubeadm kubectl systemctl enable --now kubelet
11.初始化 Master 節點 master
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
l --pod-network-cidr :后續安裝 flannel 的前提條件,且值為 10.244.0.0/16, 參考資料
l --image-repository :指定鏡像倉庫
**報錯the number of available CPUs 1 is less than the required 2
解決:需要機器至少需要兩核,修改虛擬機設置即可
報錯running with swap on is not supported. Please disable swap
解決:需要關閉swap
swapoff -a
修改 vi /etc/fstab 文件,注釋掉 SWAP 的自動掛載,使用free -m確認swap已經關閉。 swappiness參數調整,修改vi /etc/sysctl.d/k8s.conf添加下面一行:
vm.swappiness=0
執行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。
從日志中,可以看出,要使用集群,需要執行如下命令:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
還需要部署一個 Pod Network 到集群中,此處選擇 flannel :
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
** 如果此處報錯連接不上raw.githubusercontent.com,可自行在下載kube-flannel.yml,放到虛擬機系統中
參考鏈接:https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
至此,Master 節點初始化完畢,查看集群相關信息:
# 查看集群信息 $ kubectl cluster-info
# 查看節點信息$ kubectl get nodes
# 查看 Pods 信息$ kubectl get pods --all-namespaces
如果初始化過程出現問題,使用如下命令重置:
kubeadm reset rm -rf /var/lib/cni/ rm -f $HOME/.kube/config
12.將node1和node2加到master中
在master中生成token和sh256
kubeadm token createopenssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
在node1和node2中join
kubeadm join 192.168.19.133:6443 --token kgm5g2.i9h9zupp09ai0ema--discovery-token-ca-cert-hash sha256:821850c1ff323bc8555006f9c6eb9d0f135d91898aa11c8821678144e715210a
注意:實際命令中的ip、token和sha256應以自己機器實際的為准
在master中查看
kubectl get nodes
***如果這里是notready,如果pod狀態為Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 沒有就緒,Running 才是就緒狀態。
如果有pod提示Init:ImagePullBackOff,說明這個pod的鏡像在對應節點上拉取失敗,我們可以通過 kubectl describe pod 查看 Pod 具體情況,以確認拉取失敗的鏡像:
可以用國內鏡像源,注意命令中的版本號應和自己的實際版本號一致,可用 kubectl describe pod kube-flannel-ds-amd64-d2r8p --namespace=kube-system查看(kube-flannel-ds-amd64-d2r8p為pod名稱)
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
13.測試集群各個組件
首先驗證kube-apiserver, kube-controller-manager, kube-scheduler, pod network 是否正常:部署一個 Nginx Deployment,包含2個Pod
kubectl create deployment nginx --image=nginx:alpine
kubectl scale deployment nginx --replicas=2
驗證Nginx Pod是否正確運行,並且會分配10.244.開頭的集群IP
kubectl get pods -l app=nginx -o wide
驗證一下kube-proxy是否正常
kubectl expose deployment nginx --port=80 --type=NodePort
可以通過任意 NodeIP:Port 在集群外部訪問這個服務:
curl 192.168.150.128:30670
參考地址:https://www.cnblogs.com/tylerzhou/p/10971336.html
**如果機器斷電關機后,無法啟動,報The connection to the server localhost:8080 was refused 錯誤
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source ~/.bash_profile
執行這兩天命令可解決