一、资源管理办法
1.1 陈述式资源管理
方法
kubernetes集群管理集群资源的唯一入口是通过相应的
方法调用apiserver的接口
kubectl 是官方的CLI命令行工具,用于与apiserver 进行通信,将
用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有 效途径
kubectl 的命令大全
kubectl --help
k8s
中文文档: https://docs.kubernetes.org.cn/683.html
对资源的增、删、查操作比较方便,但对改的操作就不容易了
//查看k8s版本信息
kubectl version
//查看资源对象简写
kubectl api-resources
//查看集群信息
[root@master ~]# kubectl cluster-info
//配置kubectl
自动补全
source <(kubectl completion bash)
//node节点查看日志
journalctl -u kubectl -f
1.2 声明式资源管理办法
通过yaml资源配置清单
文件在实现资源的管理
kubectl create/apply -f *.yaml
二、基本信息查看
kubectl 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 app=
Nginx:仅
显示包含app
标签,且值为
Nginx的资源
查看命名空间

2.1 查看master 节点状态
kubectl get componentstatuses
kubectl get cs

2.2 查看命令空间
kubectl get namespace
kubectl get ns
命令空
间的作用:用于允许不同命令空
间的相同类型的资源重名的

2.3 查看default命名空
间的所有资源
kubectl get all [-n default]

2.4 创建、
删除命名空间app
kubectl create ns app
kubectl get ns
//
删除命名空间app
kubectl delete namespace app
kubectl get ns

2.5 在命名空间创建deployment
在命名空间kube-public 创建副本控制器(deployment) 来启动Pod (
Nginx-wl)
kubectl create deployment
Nginx-test01 --image=
Nginx -n kube-public
kubectl get pod -n kube-public

2.6 描述某个资源的详细信息
kubectl describe deploymentI
Nginx-wl -n kube- -public
kubectl describe pod/
Nginx-test-65c98cd596-mhzrz -n kube-public

2.7 查看命名空间kube-public 中的pod信息
kubectl get pods -n kube-public

2.8 kubectl exec可以跨主机
登录容器,
kubectl exec可以跨主机
登录容器,docker exec 只能在容器所在主机上
登录
kubectl exec -it
Nginx-test-65c98cd596-mhzrz bash -n kube-public

2.9
删除(重启)pod资源
由于存在deployment/rc之类的副本控制器,
删除pod也会重新拉起来
kubectl delete pod
Nginx-test-65c98cd596-mhzrz -n kube-public
若pod无法
删除, 总是处于terminate状态, 则要强行
删除pod
kubectl delete pod
Nginx-test-65c98cd596-qx6hg -n kube-public --force --grace-period=0
#grace-period表示过渡存活期,
默认30s,在
删除pod之前允许POD慢慢终止其上的容器进程,从而优雅
退出,0表示立即终止pod

2.10 扩缩容
kubectl scale deployment -n kube-public
Nginx-test02 --replicas=3 #扩容
kubectl scale deployment -n kube-public
Nginx-test --replicas=1 #缩容

2.11
删除副本控制器
kubectl delete deployment -n kube-public
Nginx-test01
kubectl delete deployment/
Nginx-test01 -n kube-public

三、项目的生命周期
生命周期:创建 —>> 发布 —>> 更新 —>> 回滚 —>>
删除
3.1 创建 kubectl run 命令
创建并运行
一个或多个容器镜像
创建
一个 deployment 或 job 来管理容器
kubectl run --help
##启动
Nginx 实例,暴露容器端口80,设置副本数 3
kubectl run
Nginx-test01 --image=
Nginx:1.14 --port=80 --replicas=3
kubectl get pods
kubectl get all


3.2 发布 kubectl expose 命令
将资源暴露为新的 Service
kubectl expose --help
## 为deployment的
Nginx创建service,并通过service的80端口转发至容器的80端口上,service的
名称为
Nginx-service,类型为NodePort
kubectl expose deployment
Nginx --port=80 --target-port=80 --name=
Nginx-service --type=NodePort
-----------------------------------------------------------------------------------------------------------------
Kubernetes之所以需要Service,一方面是因为Pod的IP不是固定的(Pod可能会重建),另一方面则是因为一组 Pod实例之间总会有
负载均衡的需求。
Service通过Label Selector 实现的对一组的Pod的访问。
对于容器应用而言,Kubernetes 提供了基于VIP (虚拟IP)的网桥的 方式访问Service, 再由Service
重定向到相应的Pod。
service的类型:
- ClusterIP: 提供
一个集群内部的虚拟IP以供Pod访问( service
默认类型)
- NodePort:在每个Node.上打开
一个端口以供外部访问,Kubernetes将会在每个Node上打开
一个端口并且每个Node的端口都是一样的,
通过NodeIp:NodePort的方式Kubernetes集群外部的程序可以访问Service。
注:每个端口只能是一种服务, 端口范围只能是30000-32767.
- LoadBalancer:通过外部的
负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。

3.3 更新kubectl set
更改现有应用资源一些信息
kubectl set --help
##
获取修改模板
kubectl set image --help
Examples:
# Set a deployment's
Nginx container image to '
Nginx:1.9.1', and its busy
Box container image to 'busy
Box'.
kubectl set image deployment/
Nginx busy
Box=busy
Box Nginx=
Nginx:1.9.1
## 查看当前
Nginx的版本号
curl -I http://192.168.153.30:32626
kubectl set image deployment.apps/
Nginx Nginx=
Nginx:1.15
kubectl get pods
## 更新完后再次查看
Nginx的版本号
curl -I http://192.168.80.30:31268


3.4 回滚 kubectl rollout
对资源进行回滚管理
kubectl rollout --help
## 查看历史版本
kubectl rollout history deployment/
Nginx
## 执行回滚到上
一个版本
kubectl rollout undo deployment/
Nginx
## 执行回滚到指定版本
kubectl rollout undo deployment/
Nginx --to-revision=1
## 检查回滚状态
kubectl rollout status deployment/
Nginx

3.5
删除 kubectl delete
##
删除副本控制器
kubectl delete deployment/
Nginx

##
删除service
kubectl delete service/
Nginx-svc
kubectl get all

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。