kubernetes-1
kubernetes 系统学习-1
minikube 单机
minikube 下载安装
我的电脑桌面上dd的文件里有minikube
mv minikube-linux-amd64 minikube
cp minikube /usr/local/bin/
chmod +x /usr/local/bin/minikube
minikube version
minikube 报错关于VirtualBox
如何在CentOS 7.5上安装VirtualBox
摘取--3.1Kubernetes架构
Kubernetes主要由以下几个核心组件组成:
- etcd保存了整个集群的状态;
- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
- kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;
- Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
除了核心组件,还有一些推荐的插件,其中有的已经成为CNCF中的托管项目:
- CoreDNS负责为整个集群提供DNS服务
- Ingress Controller为服务提供外网入口
- Prometheus提供资源监控
- Dashboard提供GUI
- Federation提供跨可用区的集群
ReplicationController:
用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。
在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector
k8s创建pod的流程
1. kubectl 发起create pod
2. apiserver 接受ReplicaSet 创建请求(yaml)
3. apiserver 将请求数据存储到etcd的数据库中
4. scheduler----watch-----apiserver
调度计算分配到哪一个node(worker)
5. kubelet----watch----apiserver
调用docker api
创建container
k8s创建ReplicaSet 的流程
1. kubectl 发起ReplicaSet
2. apiserver 接受ReplicaSet 创建请求(yaml)
3. apiserver 将请求数据存储到etcd的数据库中
4. Controller-Manger&&ReplicaSet
watch 新的replicaset
向apiserver发起请求,如创建 3 Pod
5. scheduler----watch---apiserver
调度计算分配到哪一个node(worker)
6. kubelet----watch----apiserver
调用docker api
创建container
kubelet常用命令
显示所有的pod,service,deployment
kubectl get pods --all-namespaces -o wide
kubectl get pods -o wide
kubectl get service
kubectl get deployment -o wide 显示详细信息
kubectl get deployment my-dep 列出指定的deployment
kubectl get rs ReplicaSet简称 rs
kubectl config view 显示当前kubectl的配置
kubectl delete deployments.apps tomcat kubectl 删除deployments
kubectl create -f a.yaml
kubectl create -f a.yaml -f b.yaml
kubectl create -f ./dir
kubectl create -f https://git.io/a.yaml
kubectl run nginx --image=nginx
kubectl explain pods 获取pod的yaml 元素
kubectl logs my-pod
kubectl logs -f my-pod
kubectl exec my-pod -- ls 与pod 进行交互(Pod 只有一个容器时)
kubectl exec my-pod -c my-container --ls
kubectl 对外暴露访问
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
当你的才化撑不起野心时,还是安静下来学习吧!