Kubernetes對象之Pod詳解(附安裝部署方法)
Kubernetes是容器集群管理系統,是一個開源的平臺,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
通過Kubernetes你可以:
快速部署應用
快速擴展應用
無縫對接新的應用功能
節省資源,優化硬件資源的使用
其實K8S能夠做的事情有很多,而且操作簡單,十分方便,下面先介紹如何安裝,然後是對於pod詳細介紹,如果你對docker還不怎麽了解,可以先參考前面的文章學習一下!
環境介紹:
CentOS 7.2
Kubernetes 1.5.2
docker 1.12.1
一.安裝配置
1.安裝K8S
yum -y install kubernetes
這個命令會同時安裝kube-apiserver,kube-controller-manager,kubelet,kube-proxy,kube-scheduler
2.更改服務器端設置
vim /etc/kubernetes/apiserver
### # kubernetes system config # # The following values are used to configure the kube-apiserver # # The address on the local server to listen to. #KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" KUBE_API_ADDRESS="--address=0.0.0.0" # The port on the local server to listen on. KUBE_API_PORT="--port=8080" # Port minions listen on KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" # Address range to use for services #KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16" # default admission control policies #KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota" # Add your own! KUBE_API_ARGS=""
vim /etc/kubernetes/controller-manager #指定客戶端主機的ip地址
KUBELET_ADDRESSES="--machines= 192.168.6.109"
vim /etc/kubernetes/kubelet #這個鏡像是k8s構建pod必備鏡像,如果不能從默認位置下載可以先在私庫中單獨下載這個鏡像,這裏6.109是一個私庫
#KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.6.109:5000/pod-infrastructure:latest"
3.啟動相關服務
systemctl start kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler
4.在pod創建過程中如果想讓docker從私庫中拉取鏡像,同樣需要去掉相關證書驗證
vim /etc/docker/daemon.json
{ "insecure-registries":["192.168.6.109:5000"]
5.重啟docker服務
systemctl restart docker
二.節點(Node)安裝
1.安裝K8S
yum -y install kubernetes
2.更改節點(Node)設置
vim /etc/kubernetes/apiserver
KUBE_ETCD_SERVERS="--etcd-servers= KUBE_API_ADDRESS="--insecure-bind-address=192.168.6.200"
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.6.200:8080"
vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=192.168.6.109" KUBELET_API_SERVER="--api-servers=http://192.168.6.200:8080"
3.啟動相關服務,節點端必須開放10250端口
systemctl start kubelet kube-proxy
4.查看節點是否正常,在服務器端執行
kubectl get node #此時應該存在2個節點,一個本機,一個節點
二.Pod是個什麽東西
在K8S中,Pod是創建或部署的最小/最簡單的基本單位,一個Pod是由多個Docker容器組成的容器組
如圖所示,每個pod包含至少一個標簽,標簽的形式是key:value,這樣可以更快地匹配到對應的pod,service主要的功能是暴露pod對應的端口,或是做負載均衡使用!下一節再詳細討論service的用法。
1.Pod應用實例
vim obj.json
{ "kind": "Pod", #類型,獨立的Pod "apiVersion": "v1", #API版本 "metadata": { "name": "podtest", #pod名稱 "labels": { "name": "nginx-server" #標簽 } }, "spec": { "containers":[{ "name": "master1", #第一個容器的名稱 "image": "nginx", #使用的鏡像 "ports":[{ "containerPort": 80, #容器內的端口 "hostPort": 8811 #映射的主機端口 }], "volumeMounts": [{ #數據卷 "mountPath": "/var/log/nginx", #容器內的目錄 "name": "nginx-conf" #數據卷名稱 }] },{ "name": "master2", #第二個容器的名稱 "image": "redis", "ports":[{ "containerPort": 6379, "hostPort": 7480 }] }], "volumes": [{ "name": "nginx-conf", #對應上面的數據卷名稱 "emptyDir": {} #本地掛載目錄,這裏是空目錄,路徑在/$K8S安裝路徑/pkg/volume/empty_dir }] } }
2.創建這個Pod
kubectl create -f obj.json
pod "podtest" created
3.查看已經創建的Pod
kubectl get pod
如果提示有2個正在運行則為正常,如果不是,可以查看具體錯誤日誌
4.查看Pod運行日誌
kubectl logs podtest master1/master2
5.查看創建pod的細節
kubectl describe pod podtest
6.在節點上查看容器創建情況
docker ps
可以看到一共創建了3個容器,第三個容器提供網絡和端口支持,上面兩個分別提供nginx和redis服務,這時如果訪問curl 192.168.6.109:8811 則會出現預先設置好的頁面!
7.pod刪除
如果想修改其中的配置,則需要先刪除pod再進行創建
kubectl delete -f obj.json
kubectl delete pod podtest
8.擴展查詢
kubectl get pod -o wide
可以得到Pod的運行ip,節點使用情況
Kubernetes對象之Pod詳解(附安裝部署方法)