从源码构建Kubernetes环境

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值