Kubernetes 学习之二

66 阅读3分钟

Pod ,Service, Volume 和 NameSpace 是 kubernetes集群中的四大基本对象

它们能够表示系统中部署的应用、工作负载、网络和磁盘资源,共同定义了集群的状态。Kubernetes 中很多其他的资源其实只对这些基本的对象进行了组合。

Pod -> 集群中的基本单元 Service -> 解决如何访问 Pod 里面服务的问题 Volume -> 集群中的存储卷 Namespace -> 命名空间为集群提供虚拟的隔离作用

kubectl 命令学习

  1. 工具使用参数

get 显示一个或多个资源
describe 显示资源详情
create 从文件或标准输入创建资源
update 从文件或标准输入更新资源
delete 通过文件名,标准输入,资源名或者label删除资源
log 数除pod中一个容器的日志
rolling-update 对指定的RC执行滚动升级
exec 在容器内执行命令
port-forward 将本地端口转发到Pod
proxy 为kubernetes API server 启动代理服务器
run 在集群中使用指定镜像启动容器
expose 将SVC 或pod暴露为新的kubernetes service
label 更新资源的label config 修改kubernetes 配置文件

cluster-info 显示集群信息

api-versions 数除服务端支持的API版本

version 数除服务端和客户端的版本信息

help 显示各个命令的帮助信息

ingress-nginx 管理ingress服务的插件

显示合并后的kubeconfig配置: kubectl config view

获取pod和svc的文档 kubectl explain pods,svc

创建资源对象

kubectl create -f xxx-rc.yaml -f xxx-service.yaml

kubectl create -f <目录> 根据目录下所有yaml进行创建

kubectl create -f git.io/XXXX 使用URL来创建资源

kubectl create -f ./pod.json

kubectl create -f docker-registry.yaml --edit -o json

查看资源对象

kubectl get nodes

kubectl get namespace

kubectl get --help

kubectl get pods 列出默认namesapce中的所有pod

kubectl get pods --namespace=test 指定namespace中的pod

kubectl get pods --all-namespaces 列出所有namesapce中的所有pod

列出所有pod并显示详细信息

kubectl get pods -o wide

kubectl get replicationcontroller web

kubectl get -k dir/

kubectl get -f pod.yaml -o json

kubectl get rc/web service/frontend pods/web-pod-12test3

kubectl get pods/app-prod-abcd123456-tetst7 --namespace=test -o wide

kubectl get -o template pod/web-pod-12test3 --template={{.status.phase}}

kubectl get pods,rc,services --include-uninitialized

kubectl get rc

kubectl get deployment

kubectl get deployment my-app 列出指定deployment

kubectl get svc

kubectl get service

kubectl get pods -n default 查看不同namespace下的pod对象

kubectl get pods --all-namespace

kubectl describe pods/nginx

kubectl describe pods my-pod

kubectl describe -f pod.json

kubectl describe nodes c1

kubectl describe pods

滚动更新pod frontend-v1

kubectl rolling-update frontend-v1 -f frontend-v2.json

kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2 更新资源名称并更新镜像

kubectl rolling-update frontend --image=image:v2 更新frontend pod中的镜像

kubectl rolling-update frontend-v1 frontend-v2 --rollback

kubectl replace --force -f ./pod.json 强制替换;删除后重新创建资源;服务会中断

kubectl label pods my-pod new-label=awesome 添加标签

kubectl annotate pods my-pod icon-url=http://xxxx 添加注解

kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

kubectl patch pod valid-pod -p 更新容器镜像

kubectl scale --replicas=3 rs/foo

kubectl delete -f xxx.yaml

kubectl delete pods -l name=

kubectl delete services -l name=

kubectl delete pods --all

kubectl delete service --all

kubectl delete deployment --all

kubectl edit svc/docker-registry 编辑名为docker-registry的service

kubectl exec mypod -- date 执行pod的date命令,默认使用pod的第一个容器执行

kubectl exec mypod -c ruby-container -- date 指定pod中某个容器执行date命令

kubectl exec mypod -c ruby-container -it -- bash 进入某个容器

kubectl logs mypod --namespace=test 不实时刷新查看日志