使用kubeadm安装集群,kubeadm也是安装其他程序的基础。
如何获取工作平面;工作节点相关的可执行文件。
使用hyperkube建立容器化的Kubernetes,并演示如果创建systemd文件以监管Kubernetes组件。
在Google Cloud和Azure上建立集群。
2.3. Downloading a Kubernetes Release from GitHub
https://github.com/kubernetes/kubernetes/releases
记得检查下载文件的HASH值。
2.4. Downloading Client and Server Binaries
源码中并不包含可执行文件(考虑到大小),需要单独下载:
kubefed
kube-api-server
上面下载的是最新的版本。如果要下载指定版本,可以访问“https://storage.googleapis.com/kubernetes-release/”%E4%B8%8B%E8%BD%BD
2.5. Using a hyperkube Image to Run a Kubernetes Master Node with Docker
将Kubernetes运行在容器中:hyperkube + etcd
hyperkube:以Docker镜像的方式提供的一站式可执行文件。使用该镜像启动所有的Kubernetes进程。
#!/bin/sh # 首先启动etcd服务: docker run -d --name=k8s -p 8080:8080 \ gci.io/google_containers/etcd:3.1.10 etcd \ --data-dir /var/lib/data # 使用hyperkube启动API服务: docker run -d --net=container:k8s gcr.io/google_containers/hyperkube:v1.7.11 apiserver \ --etcd-servers=http://127.0.0.1:2379 \ --service-cluster-ip-range=10.0.0.1/24 \ --insecure-bind-address=0.0.0.0 \ --insecure-port=8080 \ --admission-controll=AlwaysAdmit # 启动controller manger服务: docker run -d --net=container:k8s gcr.io/google_containers/hyperkube:v1.7.11 controller-manager \ --master=127.0.0.1:8080 # 这个三个服务共享网络空间,因此即使是在不同的容器上,但是也可以通过localhost访问。 # 测试结果的准确性 docker exec -it k8s /bin/sh # export ETCDCTL_API=3 # etcdctl get "/registry/api" --prefix=ture # 或者使用 curl -s http://127.0.0.1:8080/api/v1
上面都是Master节点上的操作,还没有介绍「调度器」,也未使用kubelet和kube-proxy建立节点。
上面的示例只演示了如何启动本地的三个容器来运行Kubernetes API服务。
如果要查看服务的帮助选项,可以使用:docker run –rm -it gci.io/google_containers/hyperkube:v1.7.11 /apiserver –help
不要用这种方法来创建生产环境,这种做法可以很好的探索Kubernetes的组件。
2.6. Writing a systemd Unit File to Run Kubernetes Components
执行systemctl cat kubelet.service查看单元文件。但这只是kubelet的单元文件。
还可以为Kubernetes的各个组件,API Server、控制器管理、调度器、代理,编写单元文件。参考 Bootstrapping the Kubernetes Control Plane 手册。
!!!还有另外一个做法:你只需要运行kubelet,通过选项--podmanifest-path指定自启动清单文件,将这些调度器运行在容器的内部。而只有kubelet才需要systemd管理。你可以查看/etc/kubernetes/manifest/目录,该目录下保存了组件的yaml文件。在kubelet启动后,这些组件会被自动加载,并在容器中运行。