摘要:知識點核心組件保存整個集群的狀態信息,感覺相當于的數據庫提供對資源操作的唯一入口,并提供認證授權,訪問控制,注冊與發現等機制負責維護集群的狀態,故障檢測,自動擴展,滾動更新等負責對資源的調度,按著預定的調度策略將調度到相應的集群上負責維護容
kubernetes kubernetes 知識點
1. 核心組件
etcd 保存整個集群的狀態信息,感覺相當于k8s的數據庫
apiserver 提供對k8s資源操作的唯一入口,并提供認證授權,訪問控制,API注冊與發現等機制
controller manager 負責維護集群的狀態,eg:故障檢測,自動擴展pod,滾動更新等
scheduler 負責對資源的調度,按著預定的調度策略將pod調度到相應的集群上
kubelet 負責維護容器的生命周期,相當于在node上的agent,負責管理pods和它們上面的容器,images鏡像、volumes等
kube-proxy 負責為service提供集群內部的服務發現和負載均衡
2. kubernetes 常用命令
查看集群信息
kubectl cluster-info
在集群中運行一個應用程序
kubectl run nginx-test --replicas=3 --labels="app=nginx" --image=nginx:latest --port=80 #使用kubectl run命令啟動一個pod,自定義名稱為nginx-test,啟動了3個pod副本,并給pod打上標簽app=nginx,這個pod拉取docker鏡像nginx:latest,開放端口80
查看集群中所有pod
kubectl get po kubectl get pod kubectl get pods
根據標簽label查看集群中pod
kubectl get pods -l app kubectl get pods -l app=nginx
查看標簽為app=nginx的pod在集群中具體分配在哪個節點和pod的ip
kubectl get pods -l app=nginx -o wide
查看pod的詳細信息
kubectl describe pods
查看集群中的deployment(其他命令與pod類似)
kubectl get deploy
查看集群中的replica set(其他命令與pod類似)
kubectl get replicaset kubectl get rs
創建一個service,集群中的資源通過service與外界交互
kubectl expose deploy nginx-test --port=8080 --target-port=80 --name=nginx-service #k8s集群通過deploy來管理,導出名為nginx-test的deploy,為其創建名為nginx-service的服務開放給外界,使外界能通過nginx-service來和nginx-test交互,外部端口為8080,內部端口為80
查看集群中的服務(其他命令與pod類似)
kubectl get svc
查看pod中容器的日志
kubectl log#查看指定pod內容器的日志 kubectl log -l app=nginx #查看標簽lable為app=nginx下的pod的容器日志
pod的副本的擴容和縮容
kubectl scale deploy nginx-test --replicas10 #通過kubectl scale將名為nginx-test的deploy重新定義有10個副本pod
查看pod副本擴容縮容的實時進度
kubectl rollout status deploy nginx-test
刪除資源
pod和rs不能直接被刪除,其被deploy控制,即使刪除了某一pod,也會創建新的pod來對應配置pod副本數量,要想刪除pod,只能用刪除其deploy來刪除,或者變更pod副本配置縮容(如上)
kubectl delete deploy nginx-test #刪除部署的deploy(刪除其對于的pod和rs) kubectl delete svc nginx-service #刪除創建的service
3. 應用創建部署yaml文件
tomsun28之后的k8s應用部署修改,都確定使用apply形式部署更新,使用git版本控制創建資源,好處多多
kubectl apply -f nginx.yaml ##更新式創建資源,如果不存在此資源則創建,如存在改動則調整資源(推薦) kubectl delete -f nginx.yaml #資源(pod,deployment,service,replicaset...)刪除銷毀
kubernetes部署nginx集群
nginx.yaml :
# ----------------------nginx--------------------- # # ------nginx deployment------ # kind: Deployment apiVersion: apps/v1beta2 metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: 192.167.2.144:5000/nginx:latest ports: - containerPort: 80 --- # -------nginx-service--------- # apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 30001 selector: app: nginx
kubectl apply -f nginx.yaml
記一下對kubernetes集群的搭建部署ubantu下用kubeadm搭建kubernetes集群
官方安裝教程
ubuntu + docker 環境 (目前是兩個服務器組建集群server1+server2)
安裝kubelet kubeadm和kubectl
安裝 apt-transport-https
# apt-get update && apt-get install -y apt-transport-https
安裝gpg證書(阿里鏡像倉庫的k8s)
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
更新軟件源信息
# cat << EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF
更新并安裝kubelet kubeadm kubectl
# apt-get update && apt-get install -y kubelet kubeadm kubectl
指定版本為:
# apt-get update && apt-get install -y kubelet=1.11.1-00 kubeadm=1.11.1-00 kubectl=1.11.1-00
關閉swap
sudo swapoff -a
master server1上初始化部署kubernetes的master
獲取初始化所需版本docker鏡像,k8s=v1.11.1在我的docker hub "s tomsun28可以拉取
# kubeadm config images list ##查詢當前kubeadm版本所需images # kubeadm config images pull ##拉取這些images k8s=v1.11.1所對應鏡像及版本: k8s.gcr.io/coredns:1.1.3 k8s.gcr.io/etcd-amd64:3.2.18 k8s.gcr.io/kube-apiserver-amd64:v1.11.1 k8s.gcr.io/kube-controller-manager-amd64:v1.11.1 k8s.gcr.io/kube-proxy-amd64:v1.11.1 k8s.gcr.io/kube-scheduler-amd64:v1.11.1 k8s.gcr.io/pause:3.1
初始化master
kubeadm init --kubernetes-version=v1.11.1 --apiserver-advertise-address=116.196.81.106 --pod-network-cidr=10.244.0.0/16
--apiserver-advertise-address=指定apiserver的訪問ip,ip默認為當前虛擬機的默認網卡ip. 當ip為內網地址時,k8s集群只能搭建在網段內部,如果有需求通過外網ip來操作apiserver,需要在啟動集群時添加可信參數 --apiserver-cert-extra-sans=116.196.81.106 將外網的ip添加進去. 當ip為外網地址時,可以實現不同網段的虛擬機組成k8s集群(目前我就是這個需要,一個京東云一個阿里云),暫時還沒測這種跨公網的集群性能咋樣,畢竟考慮到網速帶寬等不如內網,但有一個優勢就是可以整合不同的資源,不被同一云商所束縛,jd掛了ali還可以用.
成功之后會有join集群的腳步提示,記一下
kubeadm join 192.168.0.3:6443 --token q6gmgt.3dakenwttapw4n2o --discovery-token-ca-cert-hash sha256:dbf69119e962456c239c5f7821ee9a0db46fb643fc40da8776d4e032de072085
根據output提示,to start using your cluster, you need to run(no root user )
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
或者(root user):
export KUBECONFIG=/etc/kubernetes/admin.conf
安裝 pod network 提供 pods 節點之前相互通信
運行下面命令設置 /proc/sys/net/bridge/bridge-nf-call-iptables為1
sysctl net.bridge.bridge-nf-call-iptables=1
選擇 flannel 作為 pod network
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml
要使 flannel 能正常使用,需要在master初始化時 kubeadm init 添加對應pod-network-cidr
kubeadm init --pod-network-cidr=10.244.0.0/16
解除master不能調度運行其他pod的限制
kubectl taint nodes --all node-role.kubernetes.io/master-
server2上部署kebernetes并作為節點join to master
在server2服務器上執行步驟2
作為node節點加入到master集群中
kubeadm join --token
在master上查看集群node節點分布
kubectl get nodes
對kubeadm所做的搭建進行undo revert
kubeadm reset
參考來自
kubernetes官方部署文檔
轉載請注明 from tomsun28
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32822.html
摘要:同時該版本在安全性和等關鍵功能上作出了改進年月日,發布。盡管谷歌這些年來是的主要貢獻者,但現在其他技術人員在這個項目上的貢獻量已經幾乎和谷歌持平了。這些舉動都在表明云計算市場的戰火將繼續蔓延,已經成為兵家必爭之地。年月日,宣布推出。 Kubernetes 在過去幾年中一直是云計算領域最著名的開源項目之一。20...
摘要:年初開始研究,至目前已發表近篇學習筆記。同時,他也是中國社區的活躍者,見證了中國社區的一路成長。經本人授權,從本周開始,中國將轉載他的學習筆記,由淺入深地分享他在學習過程中的收獲。節點包含的組件目前這三個組件需要部署在同一臺機器上。 作者:宋凈超 宋凈超(Jimmy Song),TalkingData 容器技術負責人,微服務和云原生應用布道者。2017 年初開始研究 Kubernete...
摘要:同時該版本在安全性和等關鍵功能上作出了改進年月日,發布。盡管谷歌這些年來是的主要貢獻者,但現在其他技術人員在這個項目上的貢獻量已經幾乎和谷歌持平了。這些舉動都在表明云計算市場的戰火將繼續蔓延,已經成為兵家必爭之地。年月日,宣布推出。Kubernetes 在過去幾年中一直是云計算領域最著名的開源項目之一。 2018 年,Kubernetes 度過了自己的 4 歲生日。從 2014 年開源...
摘要:我們要學習,就有首先了解的技術范圍基礎理論知識庫等,要學習,肯定要有入門過程,在這個過程中,學習要從易到難,先從基礎學習。組件組件一個集群是由一組被稱為節點的機器或虛擬機組成,節點有兩種類型。我們要學習 Kubernetes,就有首先了解 Kubernetes 的技術范圍、基礎理論知識庫等,要學習 Kubernetes,肯定要有入門過程,在這個過程中,學習要從易到難,先從基礎學習。 接...
摘要:最近谷歌正式宣布已經完全實現并行計算并原生態支持與相結合,使得谷歌機器學習開源項目在支持集群化并行化和分布式訓練方面都實現了質的飛躍。隨著和兩大技術的結合,這將對機器學習技術的實踐產生深遠影響。 showImg(https://segmentfault.com/img/bVuqxr); 最近谷歌正式宣布TensorFlow 0.8 已經完全實現并行計算并原生態支持與kubernetes...
閱讀 3243·2021-10-27 14:20
閱讀 2525·2021-10-08 10:05
閱讀 1625·2021-09-09 09:33
閱讀 2902·2019-08-30 13:16
閱讀 1435·2019-08-29 18:34
閱讀 1171·2019-08-29 10:58
閱讀 1228·2019-08-28 18:22
閱讀 1226·2019-08-26 13:33