Kubernetes(简称k8s)
什么是k8s
适用于自动部署,扩缩和管理容器化应用程序的开源系统
为什么使用k8s
单独使用容器的问题
- 宿主机无法自动恢复
- 程序级的健康检查不到位
- 程序扩容,部署,回滚和更新依旧不灵活
- 端口问题得不到解决
带来的优势
- 轻松管理成千上万的业务容器(通过yaml和json文件)
- 全自动容灾机制
- 全自动扩容,回滚
- 支持原生的服务发现和负载均衡(通过service服务)
- 更加灵活的健康检查(端口检测,进程检测,配置策略)
k8s架构
控制节点也可以作为工作节点使用
一切皆资源(pod节点)
kubectl基础命令
# 查看API资源 kubectl api-resources # 查看API版本 kubectl api-versions
#查看各种资源 #查看cs组件对象状态 kubectl get cs -o json|yaml|wide #cm时临时存放在etcd数据库中各种配置,方便全局调用 kubectl get cm -A #管理node运行的节点 kubectl get ds -A # kubectl get svc
命令自动补全
source <(kubectl completion bash) # 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completion 包 echo "source <(kubectl completion bash)" >> ~/.bashrc # 在你的 bash shell 中永久地添加自动补全
创建资源
# create 创建资源对象 kubectl create -f pod.yaml # apply 应用资源对象,资源不存在时创建,资源存在时,根据yaml文件来决定是否修改 kubectl apply -f pod.yaml # delete 删除资源 kubectl delete -f pod.yaml # 通过pod的名称进入容器 kubectl exec -it podName -- bash 如果有Pod中有多个容器使用 -c 参数指定容器 kubectl exec -it podName -c cName -- bash 指定命名空间 kubectl exec -it podName -n nsName bash # 节点或其他资源发生了变化,事件就会记录发生的改变。 root@k8s-master01:~# kubectl get ev -A # ingress ing API对象,边缘路由功能 root@k8s-master01:~# kubectl get ing -A # nodes no/node 节点 root@k8s-master01:~# kubectl get no -o json|yaml|wide # pods pod/po root@k8s-master01:~# kubectl get pod -o json|yaml|wide NAMESPACE # 命名空间 NAME # pod名称 READY # 容器存活状态 1/1 STATUS # pod的状态 RESTARTS # 重启次数 AGE # 存活时间 IP # 访问pod的ip地址 NODE # 所在的节点 # 有备用节点时,才会显示 NOMINATED NODE # 准备的备份 READINESS GATES # 就绪状态 # 查看pod的详细信息 root@k8s-master01:~# kubectl describe pod -n kube-system calico-node-6t9vs # namespaces ns 命名空间(分组) root@k8s-master01:~# kubectl create ns test root@k8s-master01:~# kubectl get ns root@k8s-master01:~# kubectl delete ns test # replicasets rs 用户指定数量的Pod副本 root@k8s-master01:~# kubectl get rs -A # 制定jobs的定时任务 root@k8s-master01:~# kubectl get cronjobs -A # services svc各种服务的管理 root@k8s-master01:~# kubectl get svc