论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
容器及微服务
›
容器及微服务
›
第64篇 Kubernetes的简单介绍
第64篇 Kubernetes的简单介绍
小秦哥
论坛元老
|
2024-12-6 17:14:01
|
显示全部楼层
|
阅读模式
楼主
主题
1621
|
帖子
1621
|
积分
4863
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
1.什么是Kubernetes
Kubernetes是⼀个开源的容器编排引擎,可以⽤来管理容器化的应⽤,包括容器的⾃动化的摆设、扩容、缩容、升级、回滚等等,它是Google在2014年开源的⼀个项⽬,它的前身是Google内部的Borg体系。
2.为什么要使用Kubernetes
在Kubernetes出现之前,我们⼀般都是使⽤Docker来管理容器化的应⽤,但是Docker只是⼀个单机的容器管理⼯具,它只能管理单个节点上的容器,当我们的应⽤步伐需要运⾏在多个节点上的时间,就需要使⽤⼀些其他的⼯具来管理这些节点,⽐如Docker Swarm、Mesos、Kubernetes等等,这些⼯具都是容器编排引擎,它们可以⽤来管理多个节点上的容器,但是它们之间也有⼀些区别,⽐如Docker Swarm是Docker官⽅提供的⼀个容器编排引擎,它的功能⽐较简单,适合于⼀些⼩型的、简单的场景,⽽Mesos和Kubernetes则是⽐较复杂的容器编排引擎,Mesos是Apache基⾦会的⼀个开源项⽬,⽽Kubernetes是Google在2014年开源的,⽬前已经成为了CNCF(Cloud Native Computing Foundation)的⼀个顶级项⽬,基本上已经成为了容器编排引擎的事实尺度了。
3.使⽤minikube搭建kubernetes集群环境
minikube是⼀个轻量级的kubernetes集群环境,
可以⽤来在本地快速搭建⼀个单节点的kubernetes集群,
3.1 安装minikube
minikube的安装:
# macOS
brew install minikube
# Windows
choco install minikube
# Linux
curl -LO
https://storage.googleapis.com/minikube/releases/latest/minikubelinux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
复制代码
也可以到官⽹直接下载安装包来安装:
https://minikube.sigs.k8s.io/docs/start/
3.2 启动minikube
# 启动minikube
minikube start
复制代码
4.使⽤Multipass和k3s搭建kubernetes集群环境
minikube只能⽤来在本地搭建⼀个单节点的kubernetes集群环境,
下⾯介绍如何使⽤Multipass和k3s来搭建⼀个多节点的kubernetes集群环境,
4.1 Multipass介绍
Multipass是⼀个轻量级的虚拟机管理⼯具,
可以⽤来在本地快速创建和管理虚拟机,
相⽐于VirtualBox或者VMware如许的虚拟机管理⼯具,
Multipass更加轻量快速,
⽽且它还提供了⼀些命令⾏⼯具来⽅便我们管理虚拟机。
官⽅⽹址:
https://Multipass.run/
4.1.1 安装Multipass
# macOS
brew install multipass
# Windows
choco install multipass
# Linux
sudo snap install multipass
复制代码
4.1.2 Multipass常⽤命令
关于Multipass的⼀些常⽤命令我们可以通过 multipass help 来查看,
这⾥⼤家只需要记着⼏个常⽤的命令就可以了,
# 查看帮助
multipass help
multipass help <command>
# 创建⼀个名字叫做k3s的虚拟机
multipass launch --name k3s
# 在虚拟机中执⾏命令
multipass exec k3s -- ls -l
# 进⼊虚拟机并执⾏shell
multipass shell k3s
# 查看虚拟机的信息
multipass info k3s
# 停⽌虚拟机
multipass stop k3s
# 启动虚拟机
multipass start k3s
# 删除虚拟机
multipass delete k3s
# 清理虚拟机
multipass purge
# 查看虚拟机列表
multipass list
# 挂载⽬录(将本地的~/kubernetes/master⽬录挂载到虚拟机中的~/master⽬录)
multipass mount ~/kubernetes/master master:~/master
复制代码
Multipass有个问题,每次M1芯⽚的Mac升级之后Multipass的虚拟机都会被删除,不知道⼤家有没有碰到类似的问题。
# 镜像位置
/var/root/Library/Application Support/multipassd/qemu/vault/instances
# 配置⽂件
/var/root/Library/Application Support/multipassd/qemu/multipassd-vminstances.json
复制代码
4.2 k3s介绍
k3s 是⼀个轻量级的Kubernetes发⾏版,它是 Rancher Labs 推出的⼀个开源项⽬,
旨在简化Kubernetes的安装和维护,同时它照旧CNCF认证的Kubernetes发⾏版。
4.2.1 创建和设置master节点
⾸先我们需要使⽤multipass创建⼀个名字叫做k3s的虚拟机,
multipass launch --name k3s --cpus 2 --memory 8G --disk 10G
复制代码
虚拟机创建完成之后,可以设置SSH密钥登录,不过这⼀步并不是必须的,
即使不设置也可以通过 multipass exec 或者 multipass shell 命令来进⼊虚拟机,然后我们需要在master节点上安装k3s,
使⽤k3s搭建kubernetes集群⾮常简单,只需要执⾏⼀条命令就可以在当前节点上安装k3s,打开刚刚创建的k3s虚拟机,执⾏下⾯的命令就可以安装⼀个k3s的master节点,
# 安装k3s的master节点
curl -sfL https://get.k3s.io | sh -
复制代码
国内⽤户可以换成下⾯的命令,使⽤ranher的镜像源来安装:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh |
INSTALL_K3S_MIRROR=cn sh -
复制代码
安装完成之后,可以通过 kubectl 命令来查看集群的状态,
sudo kubectl get nodes
复制代码
4.2.2 创建和设置worker节点
接下来需要在这个master节点上获取⼀个token,⽤来作为创建worker节点时的⼀个认证凭证,
它生存在 /var/lib/rancher/k3s/server/node-token 这个⽂件⾥⾯,我们可以使⽤ sudo cat 命令来查看⼀下这个⽂件中的内容,
sudo cat /var/lib/rancher/k3s/server/node-token
复制代码
将TOKEN生存到⼀个环境变量中
TOKEN=$(multipass exec k3s sudo cat /var/lib/rancher/k3s/server/nodetoken)
复制代码
生存master节点的IP地址
MASTER_IP=$(multipass info k3s | grep IPv4 | awk '{print $2}')
复制代码
确认:
echo $MASTER_IP
复制代码
使⽤刚刚的 TOKEN 和 MASTER_IP 来创建两个worker节点并把它们加⼊到集群中
# 创建两个worker节点的虚拟机
multipass launch --name worker1 --cpus 2 --memory 8G --disk 10G
multipass launch --name worker2 --cpus 2 --memory 8G --disk 10G
# 在worker节点虚拟机上安装k3s
for f in 1 2; do
multipass exec worker$f -- bash -c "curl -sfL https://ranchermirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn
K3S_URL="https://$MASTER_IP:6443" K3S_TOKEN="$TOKEN" sh -"
done
复制代码
如许就完成了⼀个多节点的kubernetes集群的搭建。
5.在线实验环境
Killercoda
Play-With-K8s
6.kubectl常⽤命令
6.1 基础使用
# 查看帮助
kubectl --help
# 查看API版本
kubectl api-versions
# 查看集群信息
kubectl cluster-info
复制代码
6.2 资源的创建和运行
# 创建并运⾏⼀个指定的镜像
kubectl run NAME --image=image [params...]
# e.g. 创建并运⾏⼀个名字为nginx的Pod
kubectl run nginx --image=nginx
# 根据YAML配置⽂件或者标准输⼊创建资源
kubectl create RESOURCE
# e.g.
# 根据nginx.yaml配置⽂件创建资源
kubectl create -f nginx.yaml
# 根据URL创建资源
kubectl create -f https://k8s.io/examples/application/deployment.yaml
# 根据⽬录下的所有配置⽂件创建资源
kubectl create -f ./dir
# 通过⽂件名或标准输⼊配置资源
kubectl apply -f (-k DIRECTORY | -f FILENAME | stdin)
# e.g.
# 根据nginx.yaml配置⽂件创建资源
kubectl apply -f nginx.yaml
复制代码
6.3 查看资源信息
# 查看集群中某⼀类型的资源
kubectl get RESOURCE
# 其中,RESOURCE可以是以下类型:
kubectl get pods / po # 查看Pod
kubectl get svc # 查看Service
kubectl get deploy # 查看Deployment
kubectl get rs # 查看ReplicaSet
kubectl get cm # 查看ConfigMap
kubectl get secret # 查看Secret
kubectl get ing # 查看Ingress
kubectl get pv # 查看PersistentVolume
kubectl get pvc # 查看PersistentVolumeClaim
kubectl get ns # 查看Namespace
kubectl get node # 查看Node
kubectl get all # 查看所有资源
# 后⾯还可以加上 -o wide 参数来查看更多信息
kubectl get pods -o wide
# 查看某⼀类型资源的详细信息
kubectl describe RESOURCE NAME
# e.g. 查看名字为nginx的Pod的详细信息
kubectl describe pod nginx
复制代码
6.4 资源的修改、删除和清理
# 更新某个资源的标签
kubectl label RESOURCE NAME KEY_1=VALUE_1 ... KEY_N=VALUE_N
# e.g. 更新名字为nginx的Pod的标签
kubectl label pod nginx app=nginx
# 删除某个资源
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
复制代码
6.5 调试和交互
# 进⼊某个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 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(将某个Pod的标准输⼊输出转发到本地)
kubectl attach POD -c CONTAINER
# e.g. 将名字为nginx的Pod的标准输⼊输出转发到本地
kubectl attach nginx
# 运⾏某个Pod的命令
kubectl run NAME --image=image -- COMMAND [args...]
# e.g. 运⾏名字为nginx的Pod
kubectl run nginx --image=nginx -- /bin/bash
复制代码
7.Portainer的安装和使⽤
Portainer 是⼀个轻量级的容器管理⼯具,
可以⽤来管理Docker和Kubernetes,
它提供了⼀个Web界⾯来⽅便我们管理容器,
官⽅⽹址:
https://www.portainer.io/
7.1 安装Portainer
# 创建⼀个名字叫做portainer的虚拟机
multipass launch --name portainer --cpus 2 --memory 8G --disk 10G
复制代码
当然也可以直接安装在我们刚刚创建的master节点上,
# 在master节点上安装portainer,并将其暴露在NodePort 30777上
kubectl apply -n portainer -f https://downloads.portainer.io/ce2-
19/portainer.yaml
复制代码
或者使⽤Helm安装
# 使⽤Helm安装Portainer
helm upgrade --install --create-namespace -n portainer portainer
portainer/portainer --set tls.force=true
复制代码
然后直接访问
https://localhost:30779/
或者
http://localhost:30777/
就可以了,
8.Helm的安装和使⽤
Helm 是⼀个Kubernetes的包管理⼯具,
可以⽤来管理Kubernetes的应⽤,
它提供了⼀个命令⾏⼯具来⽅便我们管理Kubernetes的应⽤,
官⽅⽹址:
https://helm.sh/
8.1 安装Helm
使⽤包管理器安装:
# macOS
brew install helm
# Windows
choco install kubernetes-helm
# 或者
scoop install helm
# Linux(Debian/Ubuntu)
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee
/usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signedby=/usr/share/keyrings/helm.gpg]
https://baltocdn.com/helm/stable/debian/ all main" | sudo tee
/etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
# Linux(CentOS/Fedora)
sudo dnf install helm
# Linux(Snap)
sudo snap install helm --classic
# Linux(FreeBSD)
pkg install helm
复制代码
使⽤脚本安装
$ curl -fsSL -o get_helm.sh
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
复制代码
或者
curl https://raw.githubusercontent.com/helm/helm/main/scripts/gethelm-3 | bash
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
小秦哥
论坛元老
这个人很懒什么都没写!
楼主热帖
Python教程(5)——Python的第一个程序 ...
Kubernetes(k8s)安装以及搭建k8s-Das ...
网易云信实时视频直播在TCP数据传输层 ...
〖Python接口自动化测试实战篇⑤〗- 接 ...
java递归简介说明
liunx速记
海量监控数据处理如何做,看华为云SRE ...
从 Stream 到 Kotlin 再到 SPL
开发一个二方包,优雅地为系统接入ELK ...
【问题】为什么 System.Timers.Timer ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
SQL-Server
物联网
人工智能
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表