赞
踩
我是南城余!阿里云开发者平台专家博士证书获得者!
欢迎关注我的博客!一同成长!
一名从事运维开发的worker,记录分享学习。
专注于AI,运维开发,windows Linux 系统领域的分享!
知识库链接:
Kubernetes简称K8s(K和s中间有8个字母)
官方文档:
在K8s中,创建核心应用配置都可以使用三种方式。
区别:
这两种方式都是创建 ConfigMap,但有一些区别:
kubectl create cm redis-conf --from-file=redis.conf
):kubectl apply -f xxx.yaml
):总的来说,命令行创建适合于临时、快速的操作,而 YAML 文件创建适合于更为复杂的配置,以及需要长期维护和版本控制的场景。两者最终都会在 Kubernetes 中创建一个 ConfigMap 对象,用来存储配置数据。
特性:
kubernetes可以使用DNS或IP地址公开容器。如果容器流量大,K8S可以负载均衡并分配网络流量,从而使部署稳定
K8S 允许自动挂载存储系统,如本地存储,公有云提供商。
K8S可以根据你期望的状态,自动化K8S来部署创建新容器,删除现有容器并将他们的所有资源用于新容器。
K8S允许你指定每个容器所需要的CPU和内存(RAM)。当容器指定了资源请求时,K8S可以做出更好的决策来管理容器的资源
K8s可以重新启动失败的容器,替换,杀死不响应用户定义状态的容器。
K8s允许存储和管理敏感信息,如密码、OAuth令牌和ssh密钥。
Kubernetes是一个可弹性运行分布式系统的框架。会满足上方所有的特性。
具体安装步骤可见:
- #查看集群节点 #######在master机器上看
- kubectl get nodes
-
- #根据配置文件,给集群创建资源
- kubectl apply -f xxx.yaml
-
- #查看集群部署了那些应用 此条命令类似于 docker ps 运行中的应用在docker中叫容器 在k8s中叫pod
- kubectl get pods -A
-
- #创建名称空间 namespace 简称ns
- kubectl create ns hello
- kubectl delete ns hello
- ########################## pod相关命令
- kubectl run mynginx --image=nginx
-
- # 查看default名称空间的Pod
- kubectl get pod
- # 描述
- kubectl describe pod 你自己的Pod名字
- # 删除
- kubectl delete pod Pod名字
- # 查看Pod的运行日志
- kubectl logs Pod名字
-
- # 每个Pod - k8s都会分配一个ip
- kubectl get pod -owide
- # 使用Pod的ip+pod里面运行容器的端口
- curl 192.168.169.136
-
- # 集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod
kubectl apply -f xxxx.yaml
kubectl delete -f pod.yaml
- # 每隔一秒运行下kubectl get pod
- watch -n 1 kubectl get pod
- curl 127.0.0.1:80
- apiVersion: v1
- kind: Pod
- metadata:
- labels:
- run: mynginx
- name: mynginx
- # namespace: default
- spec:
- containers:
- - image: nginx
- name: mynginx
-
-
-
- ####################################一个pod配置多个容器 ###########################
- apiVersion: v1
- kind: Pod
- metadata:
- labels:
- run: myapp
- name: myapp
- spec:
- containers:
- - image: nginx
- name: nginx
- - image: tomcat:8.5.68
- name: tomcat
- #删除同一个命名空间多个pod default是命名空间名字
- kubectl delete pod myapp mynginx -n default
-
- kubectl get pod
- kubectl get pod -owide #可以查看出pod的IP等详细信息
-
- # 清除所有Pod,比较下面两个命令有何不同效果?
- kubectl run mynginx --image=nginx
-
- kubectl delete pod xxx(kubectl get pod 获取的name )
-
- kubectl create deployment mytomcat --image=tomcat:8.5.68
- # 自愈能力 删除pod后会继续自启
- #删除
- kubectl delete deploy mytomcat
每种特性对应三种部署方式,此处仅展示 1. bash方式
kubectl create deployment my-dep --image=nginx --replicas=3
- #扩容缩容只需要修改后面的数字即可
- kubectl scale deployment/my-dep --replicas=5
- #缩容
- kubectl scale deployment/my-dep --replicas=3
自愈的意思是pod如果突然停止,K8s会自动重启
故障转移的意思是pod在某一节点出现问题,会自动转移到其他节点
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --reload
- #deployment/my-dep: deployment是负载状态,而my-dep是deployment负载状态的实例名称
- kubectl set image deployment/my-dep nginx=nginx:1.16.1 --reload
- kubectl rollout status deployment/my-dep
-
-
- kubectl edit deployment my-dep
-
- #修改 replicas
- #历史记录
- kubectl rollout history deployment/my-dep
-
-
- #查看某个历史详情
- kubectl rollout history deployment/my-dep --revision=2
-
- #回滚(回到上次)
- kubectl rollout undo deployment/my-dep
-
- #回滚(回到指定版本)
- kubectl rollout undo deployment/my-dep --to-revision=2
pod容器与docker创建的容器区别
在Docker中,通常建议一个容器只运行一个主要应用程序,这是因为Docker容器的设计初衷是为了实现单一进程的隔离和管理。虽然在一个Docker容器中可以运行多个进程,但这通常不是推荐的做法,因为这样会增加容器的复杂性和难以管理性。
相比之下,Kubernetes中的Pod可以包含多个容器,并且这些容器可以共享资源和网络。这意味着在一个Pod中可以运行多个应用程序,这些应用程序可以共享同一个网络命名空间、存储卷等资源。这种设计使得Kubernetes中的Pod更灵活,可以用于运行多个紧密相关的应用或服务,并且它们可以共享一些资源和相互通信。
因此,虽然在Docker中通常建议一个容器只运行一个应用程序,但在Kubernetes中的Pod可以包含多个容器,每个容器可以运行一个独立的应用程序,从而实现多个应用程序在同一个Pod中运行的情况。
是的,Kubernetes中的命名空间(Namespace)是用来对集群中的资源进行逻辑分组和隔离的机制。一个命名空间可以包含多个Pod、Service、Deployment等各种资源对象。
在Kubernetes中,Pod是最小的可部署单元,它可以包含一个或多个容器。这些Pod可以被部署到不同的命名空间中,一个命名空间可以包含多个Pod,这些Pod之间可以相互关联或独立存在。
通过使用命名空间,可以实现对不同应用、团队或环境的资源进行隔离和管理。每个命名空间都有自己的资源范围,资源对象在同一个命名空间内是唯一的,但不同命名空间之间的资源对象可以重名。
因此,一个命名空间可以包含多个Pod,而这些Pod可以是属于同一个应用或服务的不同实例,也可以是完全不同的应用程序。命名空间的使用有助于更好地组织和管理Kubernetes集群中的资源。
节点(Nodes)就是服务器。
Pod是K8s中最小的可部署单元,一个Pod有一个或多个容器。
在Kubernetes中,术语"实例"通常不用于描述服务器或Pod。让我们澄清一下:
因此,在Kubernetes中,实例通常指的是Pod的副本数量,而节点(Nodes)是物理或虚拟服务器,它们组成集群并提供计算资源来运行Pod。每个节点可以运行多个Pod,而每个Pod可以包含一个或多个容器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。