無坑部署vmware搭建最新k8s集群(1.17.3)


 

我的環境

環境 說明
宿主機 windows10(內存24G)
vmware 版本v12
centos v7.6

centos 7.6 原版鏡像:

鏈接:https://pan.baidu.com/s/1LBBqxM43yUctfiWv8ysEPw 提取碼:l8rx

虛擬機 說明
192.168.159.133 master,4C 8G
192.168.159.135 node,4C 4G

2台centos都要執行的步驟

關閉防火牆

順序執行命令:

  • iptables -F
  • setenforce 0
  • systemctl stop firewalld
  • systemctl disable firewalld

修改hostname

執行命令: vi /etc/hostname

我把 192.168.159.133 改成 workone,192.168.159.135改成worktwo (名字根據自己隨意)

修改host文件

vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.159.133     workone

192.168.159.135    worktwo

禁用swap

執行命令:

  • swapoff -a
  • vi /etc/fstab

找到下面行在前面加一個 # 注釋 swap功能

#/dev/mapper/centos-swap swap swap    defaults        0 0    #禁用swap自動掛載

注意:剛安裝好centos虛擬機時 我在 fstab 文件沒有找到這行,我重啟了找到,所以如果你沒找到的話,可以先繼續下面步驟,因為后面啟動出錯會有提示讓你禁用swap

安裝Docker

順序執行命令:


sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
systemctl start docker.service
systemctl enable docker.service

配置阿里雲鏡像加速器

cat>>/etc/docker/daemon.json<<EOF
{

        "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

}

EOF

上面執行完后 重啟docker生效

執行命令:

  • systemctl daemon-reload
  • systemctl restart docker

添加K8s 國內鏡像源

cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF

安裝K8s所需要的3個組件

執行命令:

  • yum install -y kubeadm kubelet kubectl

說明:

  • kubeadm:安裝工具,使所有的組件都會以容器的方式運行

  • kubectl:客戶端連接K8S API工具

  • kubelet:運行在node節點,用來啟動容器的工具

設置k8s開機自啟動

執行命令:

systemctl enable kubelet.service

加載內核模塊

cat>>/etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_nonlocal_bind = 1

net.ipv4.ip_forward = 1

vm.swappiness=0

EOF

然后執行

  • vi /etc/sysctl.conf 填寫: net.ipv4.ip_forward = 1
  • 執行命令: sysctl -p

執行命令:


cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash 
modprobe -- br_netfilter

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

執行命令:

  • chmod 755 /etc/sysconfig/modules/ipvs.modules
  • bash /etc/sysconfig/modules/ipvs.modules
  • lsmod | grep -E "ip_vs|nf_conntrack_ipv4"

上面的步驟需要在2台centos虛擬機都得執行的!

下面的步驟只在master機器上操作

我是用 192.168.159.133 作為 master機器

通過如下指令創建默認的kubeadm-config.yaml文件:

執行命令:

  • kubeadm config print init-defaults > kubeadm-config.yaml

然后修改 kubeadm-config.yaml配置

  • 下面有注釋的地方就是要修改的地方!!!
[root@docker-server1 ~]# vi kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2

bootstrapTokens:

- groups:

 - system:bootstrappers:kubeadm:default-node-token

 token: abcdef.0123456789abcdef

 ttl: 24h0m0s

 usages:

 - signing

 - authentication

kind: InitConfiguration

localAPIEndpoint:

 advertiseAddress: 192.168.159.133  #master節點的IP

 bindPort: 6443

nodeRegistration:

 criSocket: /var/run/dockershim.sock

 name: 192.168.159.133                       #修改為IP地址,如果使用域名,必須保證解析正常

 taints:

 - effect: NoSchedule

 key: node-role.kubernetes.io/master

---

apiServer:

 timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta2

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns:

 type: CoreDNS

etcd:

 local:

 dataDir: /var/lib/etcd                       #etcd容器的目錄掛載到本地的/var/lib/etcd目錄下,防止數據丟失

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers          #鏡像倉庫地址,可以修改為gcr.azk8s.cn/google_containers

kind: ClusterConfiguration

kubernetesVersion: v1.17.3                     #Kubernetes軟件版本

networking:

 dnsDomain: cluster.local

 serviceSubnet: 10.96.0.0/12

 podSubnet: 10.244.0.0/16        #添加這個內容

scheduler: {}

預先下載鏡像

執行命令:

  • kubeadm config images pull --config kubeadm-config.yaml

執行命令:

  • echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

安裝matser節點

執行命令:

  • kubeadm init --config kubeadm-config.yaml

如果輸出以下信息表示,swap沒有被禁用

[ERROR Swap]: running with swap on is not supported. Please disable swap

輸出以下信息表示,請執行echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

安裝成功后注意看console上運行的信息

  1. 會顯示如下的信息 按步執行即可

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 
  1. 會顯示加入到master的命令,保存下來

把下面的命令拿到 192.168.159.135 工作節點虛擬機上運行

kubeadm join 192.168.159.133:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:c2d6067d5c3b12118275958dee222226d09a89fc5fb559687dc989d2508d5a50
    

如果沒有以上信息說明安裝失敗了!

以上運行成功 檢測下

  • sudo kubectl get nodes

你會發現 Status 是 NotReady,因為沒有安裝網絡插件!

安裝網絡插件flannel

因為上面我們安裝的的k8s的版本是 v 1.17.3

這個版本對應的 flannel 版本是:v0.11.0

因為由於某種不可抗力 一定得先下載好docker鏡像!

下載 flannel 的 yml文件:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

執行命令:

  • kubectl apply -f kube-flannel.yml

等待k8s 把 pod:flannel生效 可以用命令查看狀態進度:

  • kubectl get pods -n kube-system

等 flannel 狀態顯示 Running后

執行查看k8s集群運行狀態命令:

  • sudo kubectl get nodes

NAME              STATUS     ROLES    AGE   VERSION
192.168.159.133   Ready      master   61m   v1.17.3
worktwo           NotReady   <none>   58m   v1.17.3

發現master已經Ready了 但是工作node沒有起來,狀態是NotReady

下面去配置工作node虛擬機上的flannel配置

192.168.159.135 是我的工作node

運行命令把master節點的配置copy到工作節點

  • scp -r 192.168.159.133:/etc/cni /etc/cni

重啟啟動 kubelet

  • systemctl restart kubelet

回到master節點查看

執行查看k8s集群運行狀態命令:

  • sudo kubectl get nodes
[root@workone ~]# sudo kubectl get nodes
NAME              STATUS   ROLES    AGE   VERSION
192.168.159.133   Ready    master   66m   v1.17.3
worktwo           Ready    <none>   64m   v1.17.3

安裝Dashboard UI

先下載官方配置文件:

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

默認不對外開放端口,下載好了后需要自己手動改下配置文件

image

修改權限為超級管理員

image

安裝命令:

  • kubectl apply -f recommended.yaml

運行命令獲取Token,登錄需要:

[root@workone ~]# kubectl describe secret -n kubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}' kubernetes-dashboard-token-jzptb kubernetes.io/service-account-token eyJhbGciOiJSUzI1NiIsImtpZCI6IkhsLUpGV0lkalc0VHlIb2p5LVhWQ21LdFBPVGFkbUlJcVJqQ2pfNHE0VWcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1qenB0YiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjVjYjQ1ZTg5LTZkNjMtNDgzMS1iYWIyLTUwNWZkMTkzMDVkYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.ShQwJ6xhntHDSpD828n4vkOVVKVRZ7KmeRPEH0tbPkcnC3bwAgwFJWfa_JIdi6KpTAMOOj4IY2fFAB83iorcqYQMG88BurNSzKSANC7cK8d3fHy5iTdh7e5IKQ_FV1mpd3d9DPLuoLjIVZKMROVleC11q6NOlNbIY4_R79Kvx3TGNqm8AWWhxBOsJ8KTTa5P6o36cH2nsJ64Qi-_x4BuA14CMSm9UJqXawi4AqYIRshlnrspDTSFRm6e3tHix-kSZQ4xIuPeKB6E59EKnCmbaPU73GfhJWWazIVCykmZg50b4uykTtXJcaWf743xjEJnfbVztcY2-kLIcgXznt37ug 

登錄UI imageimage

以上本地環境的vmware搭建k8s集群(1個master 1個worknode)就搞定了


免責聲明!

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



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