尼乐清网站建设,wordpress主题怎么修改,科技管理信息网站的建设方案,七牛wordpress后台无法登录目录
一.k8s集群资源管理方式分类
1.陈述式资源管理方式
2.声明式资源管理方式
二.陈述式资源管理方法
三.kubectl命令
四.项目生命周期
1.创建 kubectl create命令
2.发布 kubectl expose命令
3.更新 kubectl set
4.回滚 kubectl rollout
5.删除 k…目录
一.k8s集群资源管理方式分类
1.陈述式资源管理方式
2.声明式资源管理方式
二.陈述式资源管理方法
三.kubectl命令
四.项目生命周期
1.创建 kubectl create命令
2.发布 kubectl expose命令
3.更新 kubectl set
4.回滚 kubectl rollout
5.删除 kubectl delete 一.k8s集群资源管理方式分类
1.陈述式资源管理方式
增删查比较方便但是改非常不方便使用一条kubectl命令和参数选项来实现资源对象管理操作
2.声明式资源管理方式
yaml文件管理使用yaml配置文件里定义的配置实现资源对象的管理操作
二.陈述式资源管理方法
kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口kubectl 是官方的CLI命令行工具用于与 apiserver 进行通信将用户在命令行输入的命令组织并转化为 apiserver 能识别的信息进而实现管理 k8s 各种资源的一种有效途径kubectl 的命令大全kubectl --helpk8s中文文档http://docs.kubernetes.org.cn/683.html对资源的增、删、查操作比较方便但对改的操作就不容易了
三.kubectl命令
查看版本信息
kubectl version查看资源对象简写
kubectl api-resources 查看集群信息
kubectl cluster-info
kubectl get cs
kubectl get nodes配置kubectl自动补全
source (kubectl completion bash)vim /etc/bashrc #可添加到该文件的末尾
bash切换环境即可 node节点查看日志
journalctl -u kubelet -fkubectl get resource [-o wide|json|yaml] [-n namespace]
获取资源的相关信息-n 指定命令空间-o 指定输出格式
resource可以是具体资源名称如pod nginx-xxx也可以是资源类型如pod或者all(仅展示几种核心资源并不完整)
--all-namespaces 或 -A 表示显示所有命名空间
--show-labels 显示所有标签
-l app 仅显示标签为app的资源
-l appnginx 仅显示包含app标签且值为nginx的资源wide显示详细信息 kubectl get -n kube-flannel pods #查看命名空间kube-flannel下的所有pod资源
kubectl get -n kube-flannel pods kube-flannel-ds-c5zqz #-n指定具体命名空间查看指定的kube-flannel-ds-c5zqz资源kubectl get -n kube-flannel pods kube-flannel-ds-c5zqz -o wide #显示kube-flannel-ds-c5zqz资源的详细信息 kubectl get -n kube-system pods --show-labels # --show-labels 查看指定命名空间下资源的标签
kubectl get -n kube-system pods --show-labels -l k8s-app #通过-l筛选k8s-app 标签的资源
kubectl get -n kube-system pods --show-labels -l k8s-appkube-dns #进一步筛选k8s-app标签值等于kube-dns的资源 kubectl get -n kubernetes-dashboard all #all选项会列出指定命名空间下pod、service、控制器资源 kubectl get -n kubernetes-dashboard pods
kubectl get -n kubernetes-dashboard pods,service
kubectl get -n kubernetes-dashboard pods,service,deploy
#想提示查看多个资源可在资源中间以分隔
kubectl get -n kubernetes-dashboard all #查看所有资源 查看 master 节点状态
kubectl get componentstatuses
kubectl get cs查看命名空间
kubectl get namespace
kubectl get ns
命令空间的作用用于允许不同 命名空间 的 相同类型 的资源 重名的查看default命名空间的所有资源
kubectl get all [-n default]创建命名空间
kubectl get nskubectl create namespace xy101
kubectl create deployment nginx1 --imagenginx -r 3 --port80 -n xy101 #即可指定命名空间创建资源不可在同一个命名空间中创建相同名称的同种资源
kubectl get -n xy101 all 查看某个资源的详细信息
kubectl describe -n xy101 deployments.apps nginx1 #deployments.apps资源的名称 查看命名空间xy101 中的pod 信息kubectl describe -n 命名空间 资源类型 资源名称 kubectl describe -n xy101 pod nginx1-794dd8cb7b-fcxnx 删除pod
kubectl delete -n 命名空间 资源类型 资源名称 kubectl delete -n xy101 pod nginx1-794dd8cb7b-bc6cv #此种方法创建的pod资源若直接删除pod无法删除由于设置了副本数删除一个会自动再创建一个 创建pod资源方法2此种方法创建的pod是独立存在的没有控制器管理
kubectl run -n xy101 nginx2 --imagenginx --port80 #此种方法创建的pod无控制器进行管理可直接删除kubectl delete -n xy101 pod nginx2 #此种方法创建的pod可直接删除 kubectl exec可以跨主机登录容器docker exec 只能在容器所在主机上登录kubectl exec -n 命名空间 -it Pod资源名称 [-c 容器名称] -- sh|bash|命令kubectl exec -it -n xy101 pod/nginx1-794dd8cb7b-cbdjd -- sh
exec -it -n xy101 pod/nginx1-794dd8cb7b-cbdjd -- ls -l #在不进入容器的前提下查看其中内容 当一个pod中存在多个容器可使用-c指定登录的容器kubectl describe -n xy101 pod/nginx1-794dd8cb7b-cbdjd #查看资源下的容器
kubectl exec -it -n xy101 -c nginx pod/nginx1-794dd8cb7b-cbdjd -- sh #使用-c指定登录的容器 查看Pod中容器日志
kubectl logs -n 命名空间 Pod资源名称 [-c 容器名称] [-f] [-p] #-p表示查看Pod容器重启前的日志kubectl logs -n xy101 nginx1-794dd8cb7b-cbdjd -c nginx 扩缩容
kubectl scale -n 命名空间 Pod控制器资源类型 资源名称 --replicas副本数deployment|statefulsetkubectl scale -n xy101 deployment nginx1 --replicas3 删除副本控制器
kubectl get -n xy101 all
kubectl delete -n xy101 deployments.apps nginx2 删除重启pod资源由于存在deployment/rc之类的副本控制器删除pod也会重新拉起若pod无法删除总是处于terminate状态则要强行删除pod
kubectl delete pod pod-name -n namespace --force --grace-period0
#grace-period表示过渡存活期默认30s在删除pod之前允许pod慢慢终止其上的容器进程从而优雅退出0表示立即终止podkubectl delete -n xy101 pod nginx1-794dd8cb7b-lmjls --force --grace-period0
kubectl get -n xy101 all 删除全部pod资源进行重建
kubectl delete -n xy101 pods --all
kubectl get -n xy101 all 删除命名空间
kubectl delete ns 网络空间
kubectl delete ns xy101 查看service关联的Pod端点
kubectl describe -n 命名空间 资源类型 资源名称
kubectl describe -n xy101 svc svc-nginx1kubectl get -n xy101 endpoints 资源名称 #直接查看关联端点
#以上两种方法可以查看端点不多的情况若端点比较多就无法详细查看到kubectl describe -n 命名空间 endpoints 资源名称
kubectl describe -n xy101 endpoints svc-nginx1 如何修改标签选择器的值
#创建service
kubectl create -n 命名空间 service svc资源类型 资源名称 --tcpclusterIP的端口:容器端口
kubectl create -n xy101 service nodeport svc-1 --tcp8080:80 修改service标签选择器
kubectl set -n 命名空间 selector 资源类型 资源名称 标签keyvaluekubectl set -n xy101 selector svc svc-1 appnginx1 四.项目生命周期
项目的生命周期创建--发布--更新--回滚--删除
1.创建 kubectl create命令
创建并运行一个或多个容器镜像创建一个deployment 或job 来管理容器
kubectl create ns xy101 #创建命名空间
kubectl create -n xy101 deployment nginx1 --imagenginx --port80 --replicas3 #创建资源 2.发布 kubectl expose命令
将资源暴露为新的 Service
为deployment的nginx创建service并通过Service的8080端口转发至容器的80端口上Service的名称为
nginx-service类型为NodePortkubectl expose deployment nginx --port8080 --target-port80 --namenginx-service --typeNodePortkubectl create service nodeport nginx-service --tcp8080:80service 的 type 类型
ClusterIP默认类型分配一个集群内部的虚拟 IP 地址仅在集群内部可访问。例如Pod和Pod之间的通信如果是Kubernetes集群外的请求访问是不行的。NodePort宿主机上开启一个特定端口默认范围 30000-32767直接与Pod的端口相连实现访问宿主机IP端口能够直接访问到Pod。用途允许外部访问但通常用于开发或测试。LoadBalancer使用外接负载均衡器完成到服务的负载分发此模式需要使用云提供商的负载均衡器将请求分发到所有的Node上再结合kube-proxy实现流量接入外部客户端 - 云负载均衡器 - Kubernetes 节点 - kube-proxy - PodLoadBalancer和NodePort很相似目的都是向外部暴露一个端口区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备而这个设备需要外部云环境支持的外部服务发送到这个设备上的请求会被设备负载均衡转发到K8S集群中externalName将外部服务映射到集群内部并以DNS的形式用于Pod中服务对外部服务访问
创建service方法1kubectl expose -n 命名空间 Pod控制器资源类型 资源名称 --namesvc资源名称 --tpyesvc类型 --portclusterIP的端口 --targetPort容器端口kubectl expose -n xy101 deployment nginx1 --namesvc-nginx1 --port8080 --target-port80 --typeClusterIP #创建类型为ClusterIP的service所有节点服务器即可通过访问http://clusterIP:port访问service
curl http://10.96.194.137:8080 kubectl expose -n xy101 deployment nginx1 --namesvc-nginx2 --port8080 --target-port80 --typeNodePort #创建service类型为NodePortkubectl get -n xy101 svcnetstat -lntp | grep :31373 #在每个节点都可监听到这个端口 K8S集群外部/内部用户都可以通过nodeIP:nodePort来访问service 3.更新 kubectl set
重新创建一个service做测试
kubectl create -n xy101 deployment myapp-test01 --imagesoscscs/myapp:v1 --port80 --replicas2 #创建pod资源
kubectl expose -n xy101 deployment myapp-test01 --nametest02 --port8080 --target-port80 --typeNodePort #创建service类型选择NodePort
外部服务器即可通过nodeip:nodeport访问关联的pod kubectl set image -n 命名空间 Pod控制器资源类型 资源名称 容器名镜像名:标签
kubectl set image -n xy101 deployment myapp-test01 myappsoscscs/myapp:v2kubectl describe -n xy101 deployments.apps myapp-test01 4.回滚 kubectl rollout
kubectl rollout history -n 命名空间 Pod控制器资源类型 资源名称 kubectl rollout undo -n 命名空间 Pod控制器资源类型 资源名称 [--to-revisionN]kubectl rollout status -n 命名空间 Pod控制器资源类型 资源名称kubectl rollout history -n xy101 deployment myapp-test01 #查看历史回滚记录
kubectl rollout undo -n xy101 deployment myapp-test01 #撤销上一次的 rollout
kubectl rollout undo -n xy101 deployment myapp-test01 --to-revision5 #指定回滚版本
kubectl rollout status -n xy101 deployment myapp-test01 #查看回滚状态 5.删除 kubectl delete
kubectl delete -n xy101 deployments.apps myapp-test01 #删除控制器
kubectl delete -n xy101 service test02 #删除service