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环境搭建完成。