Kubernetes API Servernode
做为Kubernetes系统的入口,其封装了核心对象的增删改查操做,以RESTful API接口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。mysql
Kubernetes Scheduler
为新创建的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,能够方便替换成其余调度器。nginx
Kubernetes Controllersql
负责执行各类控制器,目前已经提供了不少控制器来保证Kubernetes的正常运行。docker
Replication Controllershell
管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。json
Kubeletvim
负责管控容器,Kubelet会从Kubernetes API Server接收Pod的建立请求,启动和中止容器,监控容器运行状态并汇报给Kubernetes API Server。api
Kubernetes Proxybash
负责为Pod建立代理服务,Kubernetes Proxy会从Kubernetes API Server获取全部的Service信息,并根据Service的信息建立代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
Docker
Node上须要运行容器服务
解决 kubectl get pods时No resources found问题
一、vim /etc/kubernetes/apiserver
二、找到”KUBE_ADMISSION_CONTROL="- admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota",去掉ServiceAccount,保存退出。
三、systemctl restart kube-apiserver 重启此服务
pull 失败
解决方案1
一、yum install rhsm -y
二、docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
若是以上两步解决问题了,那么就不须要在执行下面操做
三、docker search pod-infrastructure
四、docker pull docker.io/tianyebj/pod-infrastructure
五、docker tag tianyebj/pod-infrastructure 192.168.126.143:5000/pod-infrastructure
六、docker push 192.168.126.143:5000/pod-infrastructure
七、vi /etc/kubernetes/kubelet
修改 KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.126.143:5000/pod- infrastructure:latest"
八、重启服务
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-scheduler
systemctl restart kubelet
systemctl restart kube-proxy
解决方案2
一、docker pull kubernetes/pause
二、docker tag docker.io/kubernetes/pause:latest 192.168.126.143:5000/google_containers/pause-amd64.3.0
三、docker push 192.168.126.143:5000/google_containers/pause-amd64.3.0
四、vi /etc/kubernetes/kubelet配置为
KUBELET_ARGS="--pod_infra_container_image=192.168.126.143:5000/google_containers/pause-amd64.3.0"
五、重启kubelet服务 systemctl restart kubelet
私有仓库搭建 docker pull registry docker run -di --name=registry -p 5000:5000 registry 修改daemon.json {"insecure-registries":["192.168.126.148:5000"]} 重启docker服务 systemctl restart docker
获取当前命名空间下的容器
kubectl get pods
获取全部容器l列表
kubectl get all
建立 容器
kubectl create -f kubernate-pvc.yaml
删除容器
kubectl delete pods/test-pd 或者 kubectl delete -f rc-nginx.yaml
查看指定pod跑在哪一个node上
kubectl get pod /test-pd -o wide
查看容器日志
Kubectl logs nginx-8586cf59-mwwtc
进入容器终端命令
kubectl exec -it nginx-8586cf59-mwwtc /bin/bash
一个Pod里含有多个容器 用--container or -c 参数。
例如:假如这里有个Pod名为my-pod,这个Pod有两个容器,分别名为main-app 和 helper-app,下面的命令将打开到main-app的shell的容器里。
kubectl exec -it my-pod --container main-app -- /bin/bash
容器详情列表
kubectl describe pod/mysql- m8rbl
查看容器状态
kubectl get svc