Kubernetes是什麼
它是一個管理底層容器(Docker)的自動化平臺。
程序列表:
etcd-v3.2.28-linux-amd64.tar.gz KV存儲倉庫,可以配置共享和服務發現。
kubernetes 版本 v1.18.0-alpha.0 k8s源碼包,基於當前最新版本
Docker 容器引擎 18.09.3
GoLang 1.13.4 linux/amd64 Go語言SDK,這個版本支持gomodule機制,終於可以擺脫GOPATH了。
首先運行etcd存儲倉庫,默認的監聽端口2379
nohup /root/soft/etcd/etcd &
- 編譯Kubernetes源碼,時間較長大概十幾分鍾。
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make
- k8s 組件介紹
kube-apiserver 提供了操作各類k8s對象的api接口。
kube-scheduler 調度組件,決策pod最佳位置
kube-controller-manager 管理中心,負責集羣內的Node、Pod副本、服務端點(Endpoint)、命名空間(Namespace)、服務賬號(ServiceAccount)、資源定額(ResourceQuota)的管理
kubectl k8s管理命令行接口
kubelet k8s客戶端進程,與服務端交互,執行具體的操作。
創建證書,後面用於構建pod
openssl genrsa -out /root/projects/goproj/src/k8s.io/saccount.key 2048
安裝 kube-apiserver
cd cmd/kube-apiserver
go build .
nohup /root/projects/goproj/src/k8s.io/kubernetes/cmd/kube-apiserver/kube-apiserver --storage-backend=etcd3 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --enable-swagger-ui=true --service-cluster-ip-range=192.168.4.0/24 --service-account-key-file=/root/projects/goproj/src/k8s.io/saccount.key &
安裝 kube-scheduler
cd cmd/kube-scheduler
go build .
/root/projects/goproj/src/k8s.io/kubernetes/cmd/kube-scheduler/kube-scheduler --master=http://localhost:8080
安裝 kube-controller-manager
cd cmd/kube-controller-manager
go build .
/root/projects/goproj/src/k8s.io/kubernetes/cmd/kube-controller-manager/kube-controller-manager --master=http://127.0.0.1:8080 --service-account-private-key-file=/root/projects/goproj/src/k8s.io/saccount.key
安裝 kubelet
cd cmd/kubelet
go build .
/root/projects/goproj/src/k8s.io/kubernetes/cmd/kubelet/kubelet --kubeconfig=/etc/kubeconfig --hostname-override=172.16.1.183 --pod-infra-container-image=mirrorgooglecontainers/pause:3.1 --fail-swap-on=false
安裝kubectl
創建配置文件
apiVersion: v1
clusters:
- cluster:
server: http://IP:8080
name: kubernetes
kind: Config
preferences: {}
current-context: kubernetes-admin@kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
users:
- name: kubernetes-admin
user:
cd cmd/kubelet
go build .
nohup /root/projects/goproj/src/k8s.io/kubernetes/cmd/kubelet/kubelet --kubeconfig=kubeconfig --hostname-override=172.16.1.183 --pod-infra-container-image=mirrorgooglecontainers/pause:3.1 --fail-swap-on=false
至此k8s運行環境已經搭建完畢,接下來就在該環境創建應用。
k8s對象概念
- POD
包含實際運行的容器集合
- Label
容器集合標籤,用於建立Service和Pod的關聯
- Service
後端容器的抽象接口,代理對後端容器的訪問(不嚴謹)
-
Replication Controller
pod高可用,根據配置自動調整實際運行的pod數量
- 創建一個Pod
pod.yaml文件
apiVersion: v1
kind: Pod
metadata:
name: webapp
labels:
app: webapp
spec:
containers:
- name: webapp
image: tomcat
ports:
- containerPort: 8080
hostPort: 8081
kubectl apply -f pod.yaml
查看創建的pod
kubectl get pods
在Pod所有在Node主機訪問 地址 http://IP:8081
至此一個最小化版的k8s環境搭建完成。