K8s陈述式资源管理

命令行:kubectl命令行工具

  • 优点:90%以上的场景都可以满足

对资源的增删改查比较方便,对改不是很友好。

  • 缺点:命令比较冗长,复杂,难记

声明式:

看到声明式都是k8s当中的yml文件来实现资源管理。

GUI:

图形化工具

kubectl命令的详解,查看,部署,查看pod的情况(详细信息,日志,发布和回滚)

相关命令字典:Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

k8s中基本管理信息的查看

查看k8s的版本

复制代码
查看k8s的版本
kubectl version

k8s中所有资源对象和资源对象的简写

复制代码
kubectl api-resource

k8s的集群信息

复制代码
kubectl cluster-info

查看master节点的状态

复制代码
kubectl get cs

查看node节点的状态

复制代码
kubectl get pod
查看默认命名空间内的pod信息

kubectl get ns
查看当前集群所有的命名空间

kubectl get pod -n kube-system
-n来声明查看指定命名空间的资源

kubectl get pod -o wide 
查看默认命名空间内pod的详细信息
复制代码
kubectl get pod -n kube-system
-n来声明查看指定命名空间的资源
复制代码
kubectl get pod -o wide 

查看默认命名空间内pod的详细信息

查看指定命名空间的pod

复制代码
 kubectl get pod -n kube-system -o wide
复制代码
kubectl get node
查询节点的信息和状态

kubectl get node -o wide
查看node节点的详细信息

如何查看pod的详细信息

查看已经部署好的pod的详细信息

复制代码
kubectl get node
查看


详细查看
kubectl describle pod myapp-hj-567cb4489c-fq2fd

如果查看指定命名空间的内容,一定要加-n,不加则显示默认

如何查看pod内部的日志

复制代码
kubectl logs -f myapp-hj-567cb4489c-fq2fd


kubectl logs -n kube-system etcd-master01

kubectl create ns zzr

kubectl delete ns zzr
复制代码
kubectl delete pod myapp-hj-567cb4489c-fq2fd
先声明动作,再跟上对象,最后是对象的名称

pod的部署

deployment的部署pod:

陈述式部署:命令行

声明式:yml文件部署

滚动更新:不是一次性的把所有pod全部部署,而是一个一个来。pod的更新时使用,逐步引入新的pod,逐步减少旧的pod。

自我修复:如果有pod节点发生故障,deployment会自动启动新的pod来进行代替。

回滚:如果更新有问题,deployment会提供还原点,可以手动还原到未更新前的状态。

扩容和缩容:deployment可以随时调整pod的数量,以适应流量的变化。

上述的功能必须是基于deployment创建的服务才可以。绝大多数服务都是通过deployment来进行创建的

daemonset:不能通过命令行创建,只能在yml文件中定义这种创建方式。

后台运行创建,在每一个节点上都创建一个相同方式的,相同版本的容器运行的pod。

一般都是依赖环境和重要组件,一般也不会对这些资源进行操作。

复制代码
 kubectl get pod -n zzr


kubectl create deployment nginx-hj --image=nginx --replicas=3 -n zzr

kubectl get pod -n zzr

-n:指定命名空间

如果是基于deployment方式创建的pod,或者是daemonset方式创建的pod,是由控制器创建的pod,使用delete删除pod是删不掉的,相当于重启,

不是基于控制器创建的pod,是直接删除

远程进入节点容器

复制代码
 kubectl exec -it nginx-zzr-6bdd8bcbb5-c5tdv bash

docker的exec只能在本机内使用,不能跨主机,kubectl exec可以跨主机进入容器

复制代码
kubectl create deployment nginx-zzr --image=nginx --replicas=3 -n zzr

 kubectl exec -it nginx-zzr-6bdd8bcbb5-8ph4k bash -n zzr

 root@nginx-zzr-6bdd8bcbb5-8ph4k:/# echo k8s-nginx > /usr/share/nginx/html/index.html

 root@nginx-zzr-6bdd8bcbb5-8ph4k:/# echo k8s-nginx > /usr/share/nginx/html/index.html

如果有容器一直卡在"销毁"状态:

复制代码
kubectl delete pod 容器名 --force --grace-period=0

grace-period:表示过度存活期,默认是30秒。可以让pod优雅的结束容器内的进程,然后退出pod

=0:立刻停止pod,必须要有force才能实现

主要是用于结束卡在销毁状态的pod

对deployment创建的pod进行扩容和缩容

复制代码
 kubectl scale deployment 容器名 --replicas=所需副本数


 kubectl scale deployment myapp-hj --replicas=2

如何把服务的service进行发布

service的类型:

复制代码
kubectl get svc:查看当前命名空间的service

ClusterIP:

创建service的默认类型,提供一个集群内部的虚拟IP地址,这是service的默认类型。通过这个虚拟IP会直接访问pod的资源,无法对外提供访问。

NodePort:

会在每一个node节点上都开放一个相同的端口。外部可以通过node的本机ip+端口,访问pod资源。集群外部访问service资源的一种方式。四层代理方式。

nodeip:nodeport

随即指派,也可以指定30000-32767

基于deployment的创建方式

复制代码
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

kubectl get svc
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1      <none>        443/TCP        24h
myapp-zzr       ClusterIP   10.96.38.125   <none>        30000/TCP      20h
nginx-service   NodePort    10.96.181.60   <none>        80:31989/TCP   2s


10.96.232.240  集群内部的IP地址,外部是不可以访问这个IP地址

80:对应的是内部的service端口

31989:和内部的service的80端口做映射
复制代码
kubectl expose deployment nginx1 --port=8080 --target-port=80 --name=nginx1-service --type=NodePort

--port=8080:service和容器映射的端口,可以是任意
--target-port=80:容器内部的服务端口

如何实现负载均衡

复制代码
kubectl edit svc nginx-service
修改nodeport端口。

LoadBalancer:

如果service的类型设定为LoadBalancer,映射地址(云平台提供LoadBalancer地址)

公有云服务供应商在云平台上设置的service的场景。外部来访问,实现负载均衡。LoadBalancer这个地址是要付费的。

创建好了service,指定类型为LoadBalancer,会提供一个地址来代理pod内部的IP地址。

ExternalName:

DNS映射,给service分配一个域名,通过域名来访问后端pod资源。ExternalName的service类型,不能提供负载均衡,必须要设置一个LoadBalancer才可以实现。

做映射对外提供访问是nodeport

ExternalNmae需要映射

LoadBalancer需要花钱

更新和回滚以及发布的方式:

项目的生命周期:

创建------》发布------》更新-------》回滚------》删除

如何回滚:

查看回滚点:

复制代码
kubectl rollout history deployment nginx1
数字越大,就是最近的操作

如何给回滚点加表示

复制代码
 kubectl set image deployment nginx1 nginx=nginx:1.15 --record
复制代码
kubectl rollout undo deployment nginx1 --to-revision=1

如何查看

1.kubectl rollout status deployment nginx1

2.kubectl get pod -w

复制代码
kubectl rollout history deployment nginx1

kubectl get all
查看所有集群的信息
相关推荐
此生只爱蛋21 分钟前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617928 分钟前
Linux 基础
linux·运维·arm开发
zfj32134 分钟前
sshd除了远程shell外还有哪些功能
linux·ssh·sftp·shell
废春啊40 分钟前
前端工程化
运维·服务器·前端
我只会发热43 分钟前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
爱潜水的小L1 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
保持低旋律节奏1 小时前
linux——进程状态
android·linux·php
zhuzewennamoamtf1 小时前
Linux I2C设备驱动
linux·运维·服务器
zhixingheyi_tian1 小时前
Linux 之 memory 碎片
linux
邂逅星河浪漫2 小时前
【域名解析+反向代理】配置与实现(步骤)-SwitchHosts-Nginx
linux·nginx·反向代理·域名解析·switchhosts