初识Kubernetes:(2)Kubernetes环境搭建
- 1 环境规划
- 1.1 集群类型
- 1.2 安装方式
- 2 环境搭建
- 2.1 minikube安装
- 2.2 启动集群
- 3 服务部署
1 环境规划
1.1 集群类型
Kubernetes集群大致分为两类:一主多从和多主多从。
- 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。
- 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
为了测试方便,本次搭建的是一主多从类型的集群
1.2 安装方式
kubernetes有多种部署方式,目前主流的方式有kubeadm
、minikube
、二进制包
。
- minikube:一个用于快速搭建单节点的kubernetes工具。
- kubeadm:一个用于快速搭建kubernetes集群的工具。
- 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。
我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择minikube方式。
2 环境搭建
2.1 minikube安装
https://minikube.sigs.k8s.io/docs/start/
要使用Debian 软件包在x86-64 Linux上安装最新的 minikube稳定版本:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb
2.2 启动集群
使用root用户运行:
minikube start --driver=docker --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --image-mirror-country=cn --v=5 --force-systemd=true --kubernetes-version=v1.23.8
😄 minikube v1.28.0 on Debian 10.11 (kvm/amd64)
✨ Using the docker driver based on user configuration
✅ Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
📌 Using Docker driver with root privileges
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔥 Creating docker container (CPUs=2, Memory=3800MB) ...
> kubelet.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubectl.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm: 43.12 MiB / 43.12 MiB [------------] 100.00% 18.57 MiB p/s 2.5s
> kubectl: 44.44 MiB / 44.44 MiB [------------] 100.00% 18.00 MiB p/s 2.7s
> kubelet: 118.78 MiB / 118.78 MiB [----------] 100.00% 18.32 MiB p/s 6.7s
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔎 Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
❗ /usr/local/bin/kubectl is version 1.26.0, which may have incompatibilities with Kubernetes 1.23.8.
▪ Want kubectl v1.23.8? Try 'minikube kubectl -- get pods -A'
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
3 服务部署
在Kubernetes集群中部署一个Nginx程序,测试下集群是否正常工作。
# 部署Nginx:
kubectl create deployment nginx --image=nginx:1.14-alpine
deployment.apps/nginx created
# 暴露端口:
kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
# 查看服务状态:
kubectl get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-7c658794b9-bs6dn 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.xx.x.x <none> 443/TCP 22m
service/nginx NodePort 10.xx.x.x <none> 80:31137/TCP 12m