{"id":14986150,"url":"https://github.com/v5tech/vagrant-kubernetes-cluster","last_synced_at":"2025-04-07T07:18:07.181Z","repository":{"id":149461847,"uuid":"416167819","full_name":"v5tech/vagrant-kubernetes-cluster","owner":"v5tech","description":"Vagrant一键安装Kubernetes集群。安装 Metrics Server 、Kuboard 、Kubernetes Dashboard、KubePi、Kubernetes集群监控prometheus-operator","archived":false,"fork":false,"pushed_at":"2023-10-11T04:45:20.000Z","size":3048,"stargazers_count":295,"open_issues_count":1,"forks_count":50,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-31T06:05:14.403Z","etag":null,"topics":["kubepi","kubernetes","kubernetes-dashboard","kubesphere","kuboard","prometheus-operator","vagrant"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v5tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-10-12T03:23:28.000Z","updated_at":"2025-01-14T05:25:57.000Z","dependencies_parsed_at":"2024-02-08T17:20:27.127Z","dependency_job_id":"01c980c3-e639-4d40-8512-ae08a2cdd1e2","html_url":"https://github.com/v5tech/vagrant-kubernetes-cluster","commit_stats":null,"previous_names":["v5tech/vagrant-kubernetes-cluster"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fvagrant-kubernetes-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fvagrant-kubernetes-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fvagrant-kubernetes-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v5tech%2Fvagrant-kubernetes-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v5tech","download_url":"https://codeload.github.com/v5tech/vagrant-kubernetes-cluster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608160,"owners_count":20965953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kubepi","kubernetes","kubernetes-dashboard","kubesphere","kuboard","prometheus-operator","vagrant"],"created_at":"2024-09-24T14:12:26.052Z","updated_at":"2025-04-07T07:18:07.154Z","avatar_url":"https://github.com/v5tech.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vagrant-kubernetes-cluster\n\n**_Vagrant一键安装Kubernetes集群。安装 Metrics Server 、Kuboard 、Kubernetes Dashboard、KubePi、Kubernetes集群监控prometheus-operator等。_**\n\n**安装环境**：\n\n- Vagrant 版本： 2.2.18\n- VirtualBox 版本： 6.1.26\n\n虚拟机网卡设置如图所示：\n\n![image-20211012134939433](Screenshots/image-20211012134939433.png)\n\n**CentOS7 环境安装版本**：\n\n- CentOS 版本： centos7\n- Containerd 版本： 1.4.11\n- Kubernetes 版本： v1.22.2\n\n**Ubuntu 环境安装版本**：\n\n- Ubuntu 版本： 20.04.2 LTS\n- Containerd 版本： 1.5.5\n- Kubernetes 版本： v1.22.0\n\n## 一键安装\n\n```bash\nvagrant up\n\nBringing machine 'kmaster' up with 'virtualbox' provider...\nBringing machine 'kworker1' up with 'virtualbox' provider...\nBringing machine 'kworker2' up with 'virtualbox' provider...\n==\u003e kmaster: Importing base box 'generic/ubuntu2004'...\n==\u003e kmaster: Matching MAC address for NAT networking...\n==\u003e kmaster: Setting the name of the VM: kmaster\n==\u003e kmaster: Clearing any previously set network interfaces...\n==\u003e kmaster: Preparing network interfaces based on configuration...\n    kmaster: Adapter 1: nat\n    kmaster: Adapter 2: hostonly\n==\u003e kmaster: Forwarding ports...\n    kmaster: 22 (guest) =\u003e 2222 (host) (adapter 1)\n==\u003e kmaster: Running 'pre-boot' VM customizations...\n==\u003e kmaster: Booting VM...\n==\u003e kmaster: Waiting for machine to boot. This may take a few minutes...\n    kmaster: SSH address: 127.0.0.1:2222\n    kmaster: SSH username: vagrant\n    kmaster: SSH auth method: private key\n    kmaster:\n    kmaster: Vagrant insecure key detected. Vagrant will automatically replace\n    kmaster: this with a newly generated keypair for better security.\n    kmaster:\n    kmaster: Inserting generated public key within guest...\n    kmaster: Removing insecure key from the guest if it's present...\n    kmaster: Key inserted! Disconnecting and reconnecting using new SSH key...\n==\u003e kmaster: Machine booted and ready!\n==\u003e kmaster: Checking for guest additions in VM...\n==\u003e kmaster: Setting hostname...\n==\u003e kmaster: Configuring and enabling network interfaces...\n==\u003e kmaster: Mounting shared folders...\n    kmaster: /vagrant =\u003e D:/Vagrant/kubernetes-cluster\n==\u003e kmaster: Running provisioner: shell...\n    kmaster: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-1qfj4jz.sh\n    kmaster: [TASK 0] Setting TimeZone\n    kmaster: [TASK 1] Setting DNS\n    kmaster: [TASK 2] Setting Ubuntu System Mirrors\n    kmaster: [TASK 3] Disable and turn off SWAP\n    kmaster: [TASK 4] Stop and Disable firewall\n    kmaster: [TASK 5] Enable and Load Kernel modules\n    kmaster: [TASK 6] Add Kernel settings\n    kmaster: [TASK 7] Install containerd runtime\n    kmaster: [TASK 8] Add apt repo for kubernetes\n    kmaster: Warning: apt-key output should not be parsed (stdout is not a terminal)\n    kmaster: OK\n    kmaster: [TASK 9] Install Kubernetes components (kubeadm, kubelet and kubectl)\n    kmaster: [TASK 10] Enable ssh password authentication\n    kmaster: [TASK 11] Set root password\n    kmaster: [TASK 12] Update /etc/hosts file\n==\u003e kmaster: Running provisioner: shell...\n    kmaster: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-11nj6h4.sh\n    kmaster: [TASK 1] Pull required containers\n    kmaster: [TASK 2] Initialize Kubernetes Cluster\n    kmaster: [TASK 3] Deploy Calico network\n    kmaster: [TASK 4] Generate and save cluster join command to /joincluster.sh\n==\u003e kworker1: Importing base box 'generic/ubuntu2004'...\n==\u003e kworker1: Matching MAC address for NAT networking...\n==\u003e kworker1: Setting the name of the VM: kworker1\n==\u003e kworker1: Fixed port collision for 22 =\u003e 2222. Now on port 2200.\n==\u003e kworker1: Clearing any previously set network interfaces...\n==\u003e kworker1: Preparing network interfaces based on configuration...\n    kworker1: Adapter 1: nat\n    kworker1: Adapter 2: hostonly\n==\u003e kworker1: Forwarding ports...\n    kworker1: 22 (guest) =\u003e 2200 (host) (adapter 1)\n==\u003e kworker1: Running 'pre-boot' VM customizations...\n==\u003e kworker1: Booting VM...\n==\u003e kworker1: Waiting for machine to boot. This may take a few minutes...\n    kworker1: SSH address: 127.0.0.1:2200\n    kworker1: SSH username: vagrant\n    kworker1: SSH auth method: private key\n    kworker1:\n    kworker1: Vagrant insecure key detected. Vagrant will automatically replace\n    kworker1: this with a newly generated keypair for better security.\n    kworker1:\n    kworker1: Inserting generated public key within guest...\n    kworker1: Removing insecure key from the guest if it's present...\n    kworker1: Key inserted! Disconnecting and reconnecting using new SSH key...\n==\u003e kworker1: Machine booted and ready!\n==\u003e kworker1: Checking for guest additions in VM...\n==\u003e kworker1: Setting hostname...\n==\u003e kworker1: Configuring and enabling network interfaces...\n==\u003e kworker1: Mounting shared folders...\n    kworker1: /vagrant =\u003e D:/Vagrant/kubernetes-cluster\n==\u003e kworker1: Running provisioner: shell...\n    kworker1: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-6qmkd4.sh\n    kworker1: [TASK 0] Setting TimeZone\n    kworker1: [TASK 1] Setting DNS\n    kworker1: [TASK 2] Setting Ubuntu System Mirrors\n    kworker1: [TASK 3] Disable and turn off SWAP\n    kworker1: [TASK 4] Stop and Disable firewall\n    kworker1: [TASK 5] Enable and Load Kernel modules\n    kworker1: [TASK 6] Add Kernel settings\n    kworker1: [TASK 7] Install containerd runtime\n    kworker1: [TASK 8] Add apt repo for kubernetes\n    kworker1: Warning: apt-key output should not be parsed (stdout is not a terminal)\n    kworker1: OK\n    kworker1: [TASK 9] Install Kubernetes components (kubeadm, kubelet and kubectl)\n    kworker1: [TASK 10] Enable ssh password authentication\n    kworker1: [TASK 11] Set root password\n    kworker1: [TASK 12] Update /etc/hosts file\n==\u003e kworker1: Running provisioner: shell...\n    kworker1: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-vmdbxa.sh\n    kworker1: [TASK 1] Join node to Kubernetes Cluster\n==\u003e kworker2: Importing base box 'generic/ubuntu2004'...\n==\u003e kworker2: Matching MAC address for NAT networking...\n==\u003e kworker2: Setting the name of the VM: kworker2\n==\u003e kworker2: Fixed port collision for 22 =\u003e 2222. Now on port 2201.\n==\u003e kworker2: Clearing any previously set network interfaces...\n==\u003e kworker2: Preparing network interfaces based on configuration...\n    kworker2: Adapter 1: nat\n    kworker2: Adapter 2: hostonly\n==\u003e kworker2: Forwarding ports...\n    kworker2: 22 (guest) =\u003e 2201 (host) (adapter 1)\n==\u003e kworker2: Running 'pre-boot' VM customizations...\n==\u003e kworker2: Booting VM...\n==\u003e kworker2: Waiting for machine to boot. This may take a few minutes...\n    kworker2: SSH address: 127.0.0.1:2201\n    kworker2: SSH username: vagrant\n    kworker2: SSH auth method: private key\n    kworker2:\n    kworker2: Vagrant insecure key detected. Vagrant will automatically replace\n    kworker2: this with a newly generated keypair for better security.\n    kworker2:\n    kworker2: Inserting generated public key within guest...\n    kworker2: Removing insecure key from the guest if it's present...\n    kworker2: Key inserted! Disconnecting and reconnecting using new SSH key...\n==\u003e kworker2: Machine booted and ready!\n==\u003e kworker2: Checking for guest additions in VM...\n==\u003e kworker2: Setting hostname...\n==\u003e kworker2: Configuring and enabling network interfaces...\n==\u003e kworker2: Mounting shared folders...\n    kworker2: /vagrant =\u003e D:/Vagrant/kubernetes-cluster\n==\u003e kworker2: Running provisioner: shell...\n    kworker2: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-1s6ys4c.sh\n    kworker2: [TASK 0] Setting TimeZone\n    kworker2: [TASK 1] Setting DNS\n    kworker2: [TASK 2] Setting Ubuntu System Mirrors\n    kworker2: [TASK 3] Disable and turn off SWAP\n    kworker2: [TASK 4] Stop and Disable firewall\n    kworker2: [TASK 5] Enable and Load Kernel modules\n    kworker2: [TASK 6] Add Kernel settings\n    kworker2: [TASK 7] Install containerd runtime\n    kworker2: [TASK 8] Add apt repo for kubernetes\n    kworker2: Warning: apt-key output should not be parsed (stdout is not a terminal)\n    kworker2: OK\n    kworker2: [TASK 9] Install Kubernetes components (kubeadm, kubelet and kubectl)\n    kworker2: [TASK 10] Enable ssh password authentication\n    kworker2: [TASK 11] Set root password\n    kworker2: [TASK 12] Update /etc/hosts file\n==\u003e kworker2: Running provisioner: shell...\n    kworker2: Running: C:/Users/swfeng/AppData/Local/Temp/vagrant-shell20211012-49908-1qxwo1n.sh\n    kworker2: [TASK 1] Join node to Kubernetes Cluster\n```\n\n\u003e 安装后三台机器的 IP 为：\n\n|  机器名  |       IP       |\n| :------: | :------------: |\n| kmaster  | 192.168.56.100 |\n| kworker1 | 192.168.56.101 |\n| kworker2 | 192.168.56.102 |\n\n\u003e `root`用户密码为`kubeadmin`\n\n## 配置.kube/config\n\n```bash\nroot@kmaster:~# mkdir -p $HOME/.kube\nroot@kmaster:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config\nroot@kmaster:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config\n```\n\n集群状态：\n\n```bash\nroot@kmaster:~# kubectl cluster-info\nKubernetes control plane is running at https://kmaster.k8s.com:6443\nCoreDNS is running at https://kmaster.k8s.com:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy\n```\n\n```bash\nroot@kmaster:~# kubectl get node,po,svc -A -owide\n\nEvery 2.0s: kubectl get node,po,svc -A -owide                                                                                                             kmaster: Tue Oct 12 13:53:57 2021\n\nNAME            STATUS   ROLES                  AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME\nnode/kmaster    Ready    control-plane,master   20m     v1.22.0   192.168.56.100   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\nnode/kworker1   Ready    \u003cnone\u003e                 9m40s   v1.22.0   192.168.56.101   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\nnode/kworker2   Ready    \u003cnone\u003e                 7m35s   v1.22.0   192.168.56.102   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\n\nNAMESPACE     NAME                                           READY   STATUS    RESTARTS   AGE     IP               NODE       NOMINATED NODE   READINESS GATES\nkube-system   pod/calico-kube-controllers-7659fb8886-dwvc4   1/1     Running   0          20m     192.168.189.2    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/calico-node-2w8x5                          1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/calico-node-vqjsc                          1/1     Running   0          7m35s   192.168.56.102   kworker2   \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/calico-node-zj98h                          1/1     Running   0          9m40s   192.168.56.101   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/coredns-7568f67dbd-4jssz                   1/1     Running   0          20m     192.168.189.3    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/coredns-7568f67dbd-vn8ph                   1/1     Running   0          20m     192.168.189.1    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/etcd-kmaster                               1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-apiserver-kmaster                     1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-controller-manager-kmaster            1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-proxy-2sqmm                           1/1     Running   0          7m35s   192.168.56.102   kworker2   \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-proxy-8z758                           1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-proxy-brgl8                           1/1     Running   0          9m40s   192.168.56.101   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkube-system   pod/kube-scheduler-kmaster                     1/1     Running   0          20m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\n\nNAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   SELECTOR\ndefault       service/kubernetes   ClusterIP   10.96.0.1    \u003cnone\u003e        443/TCP                  20m   \u003cnone\u003e\nkube-system   service/kube-dns     ClusterIP   10.96.0.10   \u003cnone\u003e        53/UDP,53/TCP,9153/TCP   20m   k8s-app=kube-dns\n```\n\n## 安装 metrics-server\n\n```bash\nroot@kmaster:/vagrant/metrics# kubectl apply -f metrics.yaml\nserviceaccount/metrics-server created\nclusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created\nclusterrole.rbac.authorization.k8s.io/system:metrics-server created\nrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created\nclusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created\nclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created\nservice/metrics-server created\ndeployment.apps/metrics-server created\napiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created\n```\n\n## 安装 kuboard\n\n```bash\nroot@kmaster:~# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml\nnamespace/kuboard created\nconfigmap/kuboard-v3-config created\nserviceaccount/kuboard-boostrap created\nclusterrolebinding.rbac.authorization.k8s.io/kuboard-boostrap-crb created\ndaemonset.apps/kuboard-etcd created\ndeployment.apps/kuboard-v3 created\nservice/kuboard-v3 created\n\n```\n\n访问 kuboard http://192.168.56.100:30080\n\n\u003e 用户名： admin\n\u003e 密码： Kuboard123\n\n![image-20211012140900479](Screenshots/image-20211012140900479.png)\n\n## 安装 kubernetes-dashboard\n\n```bash\n\nroot@kmaster:/vagrant/kubernetes-dashboard# kubectl apply -f kubernetes-dashboard.yaml\nnamespace/kubernetes-dashboard created\nserviceaccount/kubernetes-dashboard created\nservice/kubernetes-dashboard created\nsecret/kubernetes-dashboard-certs created\nsecret/kubernetes-dashboard-csrf created\nsecret/kubernetes-dashboard-key-holder created\nconfigmap/kubernetes-dashboard-settings created\nrole.rbac.authorization.k8s.io/kubernetes-dashboard created\nclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created\nrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created\nclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created\ndeployment.apps/kubernetes-dashboard created\nservice/dashboard-metrics-scraper created\nWarning: spec.template.metadata.annotations[seccomp.security.alpha.kubernetes.io/pod]: deprecated since v1.19; use the \"seccompProfile\" field instead\ndeployment.apps/dashboard-metrics-scraper created\nserviceaccount/admin-user created\nclusterrolebinding.rbac.authorization.k8s.io/admin-user created\n\n# 执行下面命令后手动将type: ClusterIP 改为 type: NodePort\nroot@kmaster:~# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard\n\n# 查看svc，放行端口\nroot@kmaster:~# kubectl get svc -A |grep kubernetes-dashboard\n\nkubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.111.109.182   \u003cnone\u003e        8000/TCP                                       2m53s\nkubernetes-dashboard   kubernetes-dashboard        NodePort    10.97.250.165    \u003cnone\u003e        443:31825/TCP                                  2m53s\n\n\n# 获取访问令牌\nroot@kmaster:~# kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath=\"{.secrets[0].name}\") -o go-template=\"{{.data.token | base64decode}}\"\n\neyJhbGciOiJSUzI1NiIsImtpZCI6Ik9BODl1TGtTRjUzWUl4dnJKUHdpYnB1V0RIZGpxNkxoT2VMWEEzNW1yVk0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXdtN3hqIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIzNzAzOGNhZC1jYjE2LTQ3ZjAtYTIxZS1hODNlNjhjYjA4ZGMiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.iPxLZnueJz9y2ngFTtgEuZ36Ae0QLK2oFXEBXinYcsM5712_sw3iyYODB9Eyu9AzscMDin-jL4ssctl6dQt-3PD6vdrLjSWAlDNK_PXXYlnFCTehrcFjZNGWv3yM7e5dfUOqmrl0ROwYEKFtF93sQAYPtXHZUqDnQOQ15VE-NVd7RyCgHHNtCiV_UeDrRg7M0YBvPtL24w35MaaKyeLIs_YWZpNgjV3zNfdl86Lo3SEoU0_nVAqwZzBroUxrE6ekBDGisWvQ6NtrEZLRTgk2izPCUiT3XOj4bENwf3Ba1bCKGvIzmWx41KIVdNamN_c1YOiY1HL__1ryKwMad4JR-w\n```\n\n访问 kubernetes-dashboard https://192.168.56.100:31825\n\n![image-20211012140957412](Screenshots/image-20211012140957412.png)\n\n## 集群概况\n\n```bash\nEvery 2.0s: kubectl get node,po,svc -A -owide                                                                                                             kmaster: Tue Oct 12 14:08:09 2021\n\nNAME            STATUS   ROLES                  AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME\nnode/kmaster    Ready    control-plane,master   35m   v1.22.0   192.168.56.100   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\nnode/kworker1   Ready    \u003cnone\u003e                 23m   v1.22.0   192.168.56.101   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\nnode/kworker2   Ready    \u003cnone\u003e                 21m   v1.22.0   192.168.56.102   \u003cnone\u003e        Ubuntu 20.04.2 LTS   5.4.0-77-generic   containerd://1.5.5\n\nNAMESPACE              NAME                                             READY   STATUS    RESTARTS        AGE     IP               NODE       NOMINATED NODE   READINESS GATES\nkube-system            pod/calico-kube-controllers-7659fb8886-dwvc4     1/1     Running   0               34m     192.168.189.2    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/calico-node-2w8x5                            1/1     Running   0               34m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/calico-node-vqjsc                            1/1     Running   0               21m     192.168.56.102   kworker2   \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/calico-node-zj98h                            1/1     Running   0               23m     192.168.56.101   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/coredns-7568f67dbd-4jssz                     1/1     Running   0               34m     192.168.189.3    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/coredns-7568f67dbd-vn8ph                     1/1     Running   0               34m     192.168.189.1    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/etcd-kmaster                                 1/1     Running   0               34m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-apiserver-kmaster                       1/1     Running   0               35m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-controller-manager-kmaster              1/1     Running   0               34m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-proxy-2sqmm                             1/1     Running   0               21m     192.168.56.102   kworker2   \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-proxy-8z758                             1/1     Running   0               34m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-proxy-brgl8                             1/1     Running   0               23m     192.168.56.101   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/kube-scheduler-kmaster                       1/1     Running   0               35m     192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkube-system            pod/metrics-server-9577d976b-xzrgt               1/1     Running   0               9m27s   192.168.41.129   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkubernetes-dashboard   pod/dashboard-metrics-scraper-856586f554-kdgtw   1/1     Running   0               6m57s   192.168.41.130   kworker1   \u003cnone\u003e           \u003cnone\u003e\nkubernetes-dashboard   pod/kubernetes-dashboard-67484c44f6-lbp5l        1/1     Running   0               6m57s   192.168.77.129   kworker2   \u003cnone\u003e           \u003cnone\u003e\nkuboard                pod/kuboard-agent-2-767f88b647-pr7br             1/1     Running   1 (5m57s ago)   6m26s   192.168.189.5    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkuboard                pod/kuboard-agent-656c95877f-g968n               1/1     Running   1 (5m37s ago)   6m26s   192.168.189.6    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkuboard                pod/kuboard-etcd-th9nq                           1/1     Running   0               8m39s   192.168.56.100   kmaster    \u003cnone\u003e           \u003cnone\u003e\nkuboard                pod/kuboard-questdb-68d5bfb5b-2tnwf              1/1     Running   0               6m26s   192.168.189.7    kmaster    \u003cnone\u003e           \u003cnone\u003e\nkuboard                pod/kuboard-v3-5fc46b5557-44hlj                  1/1     Running   0               8m39s   192.168.189.4    kmaster    \u003cnone\u003e           \u003cnone\u003e\n```\n\n## 安装KubePi\n\nhttps://kubeoperator.io/docs/kubepi/install/\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/KubeOperator/KubePi/master/docs/deploy/kubectl/kubepi.yaml\n```\n\n获取访问地址\n\n```bash\n# 获取 NodeIp\nexport NODE_IP=$(kubectl get nodes -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n\n# 获取 NodePort\nexport NODE_PORT=$(kubectl -n kube-system get services kubepi -o jsonpath=\"{.spec.ports[0].nodePort}\")\n\n# 获取 Address\necho http://$NODE_IP:$NODE_PORT\n```\n\n登录\n\n```\n地址: http://$NODE_IP:$NODE_PORT\n用户名: admin\n密码: kubepi\n```\n\n导入集群，获取token\n\n```bash\nkubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath=\"{.secrets[0].name}\") -o go-template=\"{{.data.token | base64decode}}\"\n```\n\n![2021-10-28_134300.png](Screenshots/2021-10-28_134300.png)\n\n![2021-10-28_134337.png](Screenshots/2021-10-28_134337.png)\n\n![2021-10-28_134639.png](Screenshots/2021-10-28_134639.png)\n\n---\n\n**以下环境需要调整虚拟机配置，至少需4核8G内存**\n\n## 安装KubeSphere\n\n### 安装KubeSphere前置环境\n\n安装nfs文件系统\n\n#### 安装nfs-server\n\n```bash\n# 在每个机器。\nyum install -y nfs-utils\n\n# 在kmaster 执行以下命令 192.168.56.100\necho \"/nfs/data/ *(insecure,rw,sync,no_root_squash)\" \u003e /etc/exports\n\n# 执行以下命令，启动 nfs 服务;创建共享目录\nmkdir -p /nfs/data\n\n# 在master执行\nsystemctl enable rpcbind\nsystemctl enable nfs-server\nsystemctl start rpcbind\nsystemctl start nfs-server\n\n# 使配置生效\nexportfs -r\n\n#检查配置是否生效\nexportfs\n```\n\n#### 配置nfs-client\n\n```bash\nshowmount -e 192.168.56.100\nmkdir -p /nfs/data\nmount -t nfs 192.168.56.100:/nfs/data /nfs/data\n```\n\n#### 配置默认存储\n\n配置动态供应的默认存储类\n\n```yaml\n## 创建了一个存储类\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n  name: nfs-storage\n  annotations:\n    storageclass.kubernetes.io/is-default-class: \"true\"\nprovisioner: k8s-sigs.io/nfs-subdir-external-provisioner\nparameters:\n  archiveOnDelete: \"true\"  ## 删除pv的时候，pv的内容是否要备份\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nfs-client-provisioner\n  labels:\n    app: nfs-client-provisioner\n  # replace with namespace where provisioner is deployed\n  namespace: default\nspec:\n  replicas: 1\n  strategy:\n    type: Recreate\n  selector:\n    matchLabels:\n      app: nfs-client-provisioner\n  template:\n    metadata:\n      labels:\n        app: nfs-client-provisioner\n    spec:\n      serviceAccountName: nfs-client-provisioner\n      containers:\n        - name: nfs-client-provisioner\n          image: docker.io/v5cn/nfs-subdir-external-provisioner:v4.0.2\n          # resources:\n          #    limits:\n          #      cpu: 10m\n          #    requests:\n          #      cpu: 10m\n          volumeMounts:\n            - name: nfs-client-root\n              mountPath: /persistentvolumes\n          env:\n            - name: PROVISIONER_NAME\n              value: k8s-sigs.io/nfs-subdir-external-provisioner\n            - name: NFS_SERVER\n              value: 192.168.56.100 ## 指定自己nfs服务器地址\n            - name: NFS_PATH  \n              value: /nfs/data  ## nfs服务器共享的目录\n      volumes:\n        - name: nfs-client-root\n          nfs:\n            server: 192.168.56.100\n            path: /nfs/data\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: nfs-client-provisioner\n  # replace with namespace where provisioner is deployed\n  namespace: default\n---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: nfs-client-provisioner-runner\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"nodes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"persistentvolumes\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"persistentvolumeclaims\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"storage.k8s.io\"]\n    resources: [\"storageclasses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"update\", \"patch\"]\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: run-nfs-client-provisioner\nsubjects:\n  - kind: ServiceAccount\n    name: nfs-client-provisioner\n    # replace with namespace where provisioner is deployed\n    namespace: default\nroleRef:\n  kind: ClusterRole\n  name: nfs-client-provisioner-runner\n  apiGroup: rbac.authorization.k8s.io\n---\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: leader-locking-nfs-client-provisioner\n  # replace with namespace where provisioner is deployed\n  namespace: default\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"endpoints\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\"]\n---\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: leader-locking-nfs-client-provisioner\n  # replace with namespace where provisioner is deployed\n  namespace: default\nsubjects:\n  - kind: ServiceAccount\n    name: nfs-client-provisioner\n    # replace with namespace where provisioner is deployed\n    namespace: default\nroleRef:\n  kind: Role\n  name: leader-locking-nfs-client-provisioner\n  apiGroup: rbac.authorization.k8s.io\n```\n\n#### 确认配置是否生效\n\n```bash\nkubectl get sc\n```\n\n\n### 安装KubeSphere\n\n*KubeSphere目前还不支持kubernetes 1.22,这部分内容稍后就来...*\n\n\n\n\n\n## 安装Kubernetes集群监控prometheus-operator\n\n\n\n### 查看集群信息\n\n```bash\nkubectl cluster-info\n```\n\n### 克隆prometheus-operator\n\n```bash\ngit clone https://github.com/prometheus-operator/kube-prometheus.git\ncd kube-prometheus\n```\n\n### 创建namespace, CustomResourceDefinitions \u0026 operator pod\n\n\u003e 因为原配置里面的好多镜拉取不下来，因此应用修改过的配置文件(当前目录下的kube-prometheus)\n\n```bash\nkubectl apply -f manifests/setup\n```\n\n### 查看namespace\n\n```bash\nkubectl get ns monitoring\n```\n\n### 查看pod\n\n```bash\nkubectl get pods -n monitoring\n```\n\n### 应用部署配置文件\n\n```bash\nkubectl apply -f manifests/\n```\n\n### 查看pods,svc\n\n```bash\nkubectl get pods,svc -n monitoring\n```\n\n### 调整SVC访问方式\n\nPrometheus:\n\n```bash\nkubectl --namespace monitoring patch svc prometheus-k8s -p '{\"spec\": {\"type\": \"NodePort\"}}'\n```\n\nAlertmanager:\n\n```bash\nkubectl --namespace monitoring patch svc alertmanager-main -p '{\"spec\": {\"type\": \"NodePort\"}}'\n```\n\nGrafana:\n\n```bash\nkubectl --namespace monitoring patch svc grafana -p '{\"spec\": {\"type\": \"NodePort\"}}'\n```\n\n### 查看端口\n\n```bash\n$ kubectl -n monitoring get svc  | grep NodePort\nalertmanager-main       NodePort    10.96.212.116   \u003cnone\u003e        9093:30496/TCP,8080:30519/TCP   7m53s\ngrafana                 NodePort    10.96.216.187   \u003cnone\u003e        3000:31045/TCP                  7m50s\nprometheus-k8s          NodePort    10.96.180.95    \u003cnone\u003e        9090:30253/TCP,8080:30023/TCP   7m44s\n```\n\n访问 Grafana Dashboard\n\nhttp://192.168.56.100:31045\n\n```\nUsername: admin\nPassword: admin\n```\n\n![2021-10-29_162836.png](Screenshots/2021-10-29_162836.png)\n\n![2021-10-29_163551.png](Screenshots/2021-10-29_163551.png)\n\n![2021-10-29_163637.png](Screenshots/2021-10-29_163637.png)\n\n![2021-10-29_163837.png](Screenshots/2021-10-29_163837.png)\n\n![2021-10-29_164027.png](Screenshots/2021-10-29_164027.png)\n\n\n访问 Prometheus Dashboard \n\nhttp://192.168.56.100:30253\n\n\n访问 Alert Manager Dashboard \n\nhttp://192.168.56.100:30496\n\n\n### 销毁prometheus-operator监控服务\n\n```bash\nkubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup\n```\n\nhttps://computingforgeeks.com/setup-prometheus-and-grafana-on-kubernetes\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv5tech%2Fvagrant-kubernetes-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv5tech%2Fvagrant-kubernetes-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv5tech%2Fvagrant-kubernetes-cluster/lists"}