K8S(一)——在虛擬機中搭建K8S


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

執行這兩天命令可解決

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM