​ 如果是单节点的集群环境 我们可以使用 简单的方式 minikube 来本地测试 学习, 使用 mac 笔记本 可以使用 brew 直接安装即可. 如果需要多节点的集群, 本地又没有多台机器的情况下, 我们可以创建几台虚拟机来 进行模拟多个节点. 可以使用 multipass 来创建虚拟机, 在虚拟机中安装k3s 用于学习 k8s 足够了.

3.1 minikube 搭建单节点的环境

minikube 搭建单节点的Kubernetes环境 来学习,测试应用

在mac 笔记本 只需要安装

brew install  minikube 
minikube start 
# 查看集群状态
minikube status 


# 查看节点 
kubectl get nodes


# Stop your local cluster
minikube stop


# Delete your local cluster
minikube delete


# 删除minikube集群
minikube delete --all

3.2 安装多节点的集群环境

参考文档: https://geekhour.net/2023/12/23/kubernetes/

主要使用的两个工具 multipass ,k3s

使用k3sMultipass创建集群环境

multipass 使用这个可以创建轻量级虚拟机

官网: https://multipass.run/install

3.2.1 k3s 介绍

k3s 是一个轻量级的Kubernetes发行版,它是 Rancher Labs 推出的一个开源项目,
旨在简化Kubernetes的安装和维护,同时它还是CNCF认证的Kubernetes发行版。

k3s Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100 MB.

https://k3s.io/

3.2.2 安装k3s
# # 安装k3s的master节点
curl -sfL https://get.k3s.io | sh -

国内用户使用这个安装 k3s

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
3.2.3 Multipass 介绍

Multipass是一个轻量级的虚拟机管理工具,可以用来在本地快速创建和管理虚拟机,相比于VirtualBox或者VMware这样的虚拟机管理工具,Multipass更加轻量快速,而且它还提供了一些命令行工具来方便我们管理虚拟机。
官方网址: https://Multipass.run/

3.2.4 安装multipass
brew install multipass
3.2.5 创建一个虚拟机

multipass 创建一个虚拟机

虚拟机名称k3s, cpu,内存 ,以及 硬盘信息指定相应大小.

multipass launch --name k3s --cpus 2 --memory 8g --disk 10g 
# 启动虚拟机
multipass start k3s  

# 停止虚拟机
multipass  stop k3s 

# 进入虚拟机
multipass shell k3s 

# 执行命令
multipass exec k3s -- ls -l 

# 查看虚拟机列表 以及对应的IP地址
multipass list 

# 删除虚拟机 
# multipass delete <虚拟机名称>, 删除名称为primaryd的虚拟机
multipass delete primary



# 查看help
multipass help 

设置免密登录, 首先进入虚拟机 给ubuntu 用户创建密码

multipass shell k3s 

passwd ubuntu 

# enter password twice
# xxxx  xxx 

# 配置免密登录
sudo vim /etc/ssh/sshd_config
# 修改两处
PasswordAuthentication yes
PermitRootLogin yes

# 保存退出


# 重启 ssh 服务
service restart ssh 

ssh-keygen 生成一对密钥

ssh-copy-id -i ~/.ssh/id_rsa.pub  'ubuntu@192.168.64.2'
3.2.6 创建和配置worker节点
# 进入虚拟机 master节点
multipass shell k3s 

TOKEN=$(multipass exec k3s sudo cat /var/lib/rancher/k3s/server/node-token)

MASTER_IP=$(multipass info k3s | grep IPv4 | awk '{print $2}')

echo $TOKEN
# 创建两个worker节点的虚拟机
multipass launch  --name worker1 --cpus 2 --memory 8G --disk 10G
multipass launch  --name worker2 --cpus 2 --memory 8G --disk 10G

使用刚刚的TOKENMASTER_IP来创建两个worker节点, 并把它们加入到集群中

for f in 1 2; do
     multipass exec worker$f -- bash -c "curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=\"https://$MASTER_IP:6443\" K3S_TOKEN=\"$TOKEN\" sh -"
 done

在k3s 虚拟机上面

# 查看节点信息
sudo kubectl get nodes


# api-versions 
sudo kubectl api-versions


# 查看集群信息
sudo kubectl cluster-info
修改deployment
# 编辑配置文件
kubectl edit deployment ng-deployment


# 修改副本数量
# 改为3 


# 查看pod
kubectl get pod

# 查看日志
kubectl logs -f  <pod-name>


# 如何进入到pod 容器中
# 进入名字为 nginx <pod-name>的Pod的容器中,并执行/bin/bash命令
kubectl exec  -it  nginx   -- /bin/bash

3.3 在线环境

https://killercoda.com/

3.4 常用命令 kubectl

https://geekhour.net/2023/12/23/kubernetes/

创建资源

kubectl create -h

kubectl run

kubectl run <NAME> --image=image 

# e.g. 创建并运行一个名字为nginx的Pod
kubectl run nginx --image=nginx


# 根据YAML配置文件或者标准输入创建资源
kubectl create RESOURCE
# e.g.
# 根据nginx.yaml配置文件创建资源
kubectl create -f nginx.yaml



# 创建一个deployment 
kubectl create deployment ng-deployment  --image=nginx

查看各种资源pod ,node ,deployment 等
# 登录到k3s主机 
multipass shell k3s 


# 查看节点信息
kubectl get node



# 查看Service
kubectl get svc


# 查看pods 
kubectl get pod


# 查看pod 所在的节点信息 IP 
kubectl get pod  -o wide


# 查看ReplicaSet
kubectl get rs           


# 查看Namespace
kubectl get ns



# 查看 deployment 
kubectl get deployment


# 查看replicaset 
kubectl get replicaset


 # 查看Ingress
kubectl get ing              



# 查看所有资源对象
kubectl get all


# 查看某一类型资源的详细信息
kubectl describe RESOURCE NAME
# e.g. 查看名字为nginx的Pod的详细信息
kubectl describe pod nginx



# 删除资源对象 
# 删除 deployment对象, 对象名称为 ng-deployment
kubectl delete deployment   ng-deployment
资源的修改,删除
# 创建一个deployment 
kubectl create deployment ng-deployment  --image=nginx


kubectl edit deployment  ng-deployment
# 修改 replicaset 为3 

# 查看deployment
kubectl get deployment 


# 删除某个资源
kubectl delete RESOURCE NAME
# e.g. 删除名字为nginx的Pod
kubectl delete pod nginx




# 删除某个资源的所有实例
kubectl delete RESOURCE --all
# e.g. 删除所有Pod
kubectl delete pod --all



# 根据YAML配置文件删除资源
kubectl delete -f FILENAME
# e.g. 根据nginx.yaml配置文件删除资源
kubectl delete -f nginx.yaml




# 设置某个资源的副本数
kubectl scale --replicas=COUNT RESOURCE NAME
# e.g. 设置名字为nginx的Deployment的副本数为3
kubectl scale --replicas=3 deployment/nginx




# 根据配置文件或者标准输入替换某个资源
kubectl replace -f FILENAME
# e.g. 根据nginx.yaml配置文件替换名字为nginx的Deployment
kubectl replace -f nginx.yaml
调试和交互
# 进入某个Pod的容器中
kubectl exec [-it] POD [-c CONTAINER] -- COMMAND [args...]
# e.g. 进入名字为nginx的Pod的容器中,并执行/bin/bash命令
kubectl exec -it nginx -- /bin/bash




# 查看某个Pod的日志
kubectl logs [-f] [-p] [-c CONTAINER] POD [-n NAMESPACE]
# e.g. 查看名字为nginx的Pod的日志
kubectl logs -f  nginx




# 将某个Pod的端口转发到本地
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
# e.g. 将名字为nginx的Pod的80端口转发到本地的8080端口
kubectl port-forward nginx 8080:80




# 运行某个Pod的命令
kubectl run NAME --image=image -- COMMAND [args...]
# e.g. 运行名字为nginx的Pod
kubectl run nginx --image=nginx -- /bin/bash
分享快乐,留住感动. '2024-01-28 14:23:54' --frank
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐