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