hyperkube image ? hyperkube images 由 Google 推出将 kubernetes 各组件以容器方式运行。容器可以有(docker/rkt等)。 使用 hyperkube images 需要提前配置 kubelet 组件。最终通过kubelet将kubenetes部署各组件。 这种安装方法的好处是:只要系统可运行容器,就可以通过hyperkube images 来运行kubernetes组件。 通过 hyperkube images 部署kubernetes组件,首先你的网络要好,原因很简单……或者你提前在本地准备好 hyperkube images 。 前面说过使用 hyperkube images 需要使用 kubelet 组件。运行kubelet组件可以有两种方法:docker和systemd。 ? ?
# sync all tags of etcd and hyperkube 脚本中有一些参数需要根据你自己情况修改,可以使用它自带的 vim 在线修改,也可以在你本地改好在粘贴上去。 如果断连了,可以在 Docker Hub 上查最新上传的 Tag 是哪个(如:https://hub.docker.com/r/k8smirror/hyperkube/tags/ 把 k8smirror 改为你的 Docker 用户名或组织名,hyperkube 改为镜像名),然后改脚本,用 sync_after_tag 这个函数继续上传。 如果断连了,可以在 Docker Hub 上查最新上传的 Tag 是哪个(如:https://hub.docker.com/r/k8smirror/hyperkube/tags/ 把 k8smirror 改为你的 Docker 用户名或组织名,hyperkube 改为镜像名),然后改脚本,用 sync_after_tag 这个函数继续上传。
etcd:2.0.12 and etcd:2.0.13 #sync_after_tag etcd 2.0.8 # sync tag after etcd:2.0.8 #sync_all_tags etcd hyperkube # sync all tags of etcd and hyperkube 脚本中有一些参数需要根据你自己情况修改,可以使用它自带的vim在线修改,也可以在你本地改好在粘贴上去 docker_repo tag同步到哪一个了,然后执行类似下面的命令从断连的tag开始同步) sync_after_tag etcd 2.0.8 同步一个或多个镜像的所有tag sync_all_tags etcd hyperkube 上那些镜像都很快,上传 Docker Hub 也很快,如果断连了,可以在 Docker Hub 上查最新上传的 tag 是哪个(如:https://hub.docker.com/r/k8smirror/hyperkube /tags/ 把k8smirror改为你的docker用户名或组织名,hyperkube改为镜像名),然后改脚本,用 sync_after_tag 这个函数继续上传。
: "{{ kube_image_repo }}/hyperkube-{{ image_arch }}" pod_infra_image_repo: "{{ kube_image_repo }}/pause kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/v1.12.5/bin/linux/amd64/kubeadm" hyperkube_download_url : "https://storage.googleapis.com/kubernetes-release/release/v1.12.5/bin/linux/amd64/hyperkube" cni_download_url cni-plugins-amd64-v0.6.0.tgz" 接下来修改文件权限,并上传到每台服务器的/tmp/releases目录下 chmod 755 cni-plugins-amd64-v0.6.0.tgz hyperkube kubeadm scp cni-plugins-amd64-v0.6.0.tgz hyperkube kubeadm root@node1:/tmp/releases 3.3 组件列表 k8s所需要的组件
: "{{ kube_image_repo }}/hyperkube-{{ image_arch }}" pod_infra_image_repo: "{{ kube_image_repo }}/pause kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/v 1.12.5/bin/linux/amd64/kubeadm" hyperkube_download_url : "https://storage.googleapis.com/kubernetes-release/release /v1.12.5/bin/linux/amd64/hyperkube" cni_download_url cni-plugins-amd64-v0.6.0.tgz" 接下来修改文件权限,并上传到每台服务器的/tmp/releases目录下 chmod 755 cni-plugins-amd64-v0.6.0.tgz hyperkube kubeadm scp cni-plugins-amd64-v0.6.0.tgz hyperkube kubeadm root@node1:/tmp/releases 3.3 组件列表 k8s所需要的组件
答案很简单,有没有注意到还有个 hyperkube 程序? 它把很多组件的功能都综合在一起了,安装的时候我们就不需要准备那么多程序,比如执行 hyperkube apiserver 和直接执行kube-apiserver 效果是一样的。 由于各组件程序把创建 cobra 命令的逻辑都提取到下面的 app 包了,hyperkube 就只可以直接调用这些,所以 hyperkube 的 main 包就仅仅需要一个 main 文件就可以了,各组件程序代码有更新 ,hyperkube 重新编译也能获取更新,所以提取 app 包是一种解耦的方法。
k8s_POD_canal-d7twg_kube-system_3c098334-d690-4411-a51c-eb659446d1e1_0 efae15a3e11f rancher/hyperkube /rke-tools/entr…" 2 minutes ago Up 2 minutes kube-proxy 4c00b668f68b rancher/hyperkube opt/rke-tools/entr…" 2 minutes ago Up 2 minutes kubelet 8bda1f517147 rancher/hyperkube rke-tools/entr…" 2 minutes ago Up 2 minutes kube-scheduler 50a74e8f5946 rancher/hyperkube entr…" 3 minutes ago Up 3 minutes kube-controller-manager 0ba10b2e326e rancher/hyperkube
rwxr-xr-x 1 root root 2005984 Feb 20 16:09 go-bindata -rwxr-xr-x 1 root root 177541000 Feb 20 16:32 hyperkube :0.12.0 k8s.gcr.io/debian-hyperkube-base-amd64:0.12.0 注意:这里通过 kube-cross 组件有指定的版本,可以从 kubernetes/build 接下来直接执行如下编译命令: $ KUBE_BUILD_PLATFORMS=linux/amd64 KUBE_BUILD_CONFORMANCE=n KUBE_BUILD_HYPERKUBE=n make .0.12_4ef32ffb4e7c35 +++ [0221 10:56:33] Docker builds done 说明一下: UBE_BUILD_CONFORMANCE=n 和 KUBE_BUILD_HYPERKUBE =n 参数配置是否构建 hyperkube-amd64 和 conformance-amd64 镜像,默认是 y 构建,这里设置为 n 暂时不需要构建了。
[x509]: 认证策略 [+] Authorization Mode (rbac, none) [rbac]: 认证模式 [+] Kubernetes Docker image [rancher/hyperkube :v1.21.9-rancher1] on host [192.168.10.10], try #1 INFO[0010] Pulling image [rancher/hyperkube:v1.21.9 -rancher1] on host [192.168.10.14], try #1 INFO[0010] Pulling image [rancher/hyperkube:v1.21.9-rancher1 ] on host [192.168.10.12], try #1 INFO[0087] Image [rancher/hyperkube:v1.21.9-rancher1] exists on host [192.168.10.10] INFO[0090] Image [rancher/hyperkube:v1.21.9-rancher1] exists on host [192.168.10.12]
v1.10.3 # 切换到v1.10.3分支 参考这里,直接执行hack/local-up-cluster.sh脚本即可启动一个轻量的k8s集群,但由于 local-up-cluster.sh 默认使用的是 hyperkube =$(kube::util::find-binary "hyperkube") local hyperkube_path=$(kube::util::find-binary "kube-apiserver ") if [[ -z "${hyperkube_path}" ]]; then return fi echo -n "$(dirname "${hyperkube_path}")" fi CTLRMGR_LOG=${LOG_DIR}/kube-controller-manager.log #${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube SCHEDULER_LOG=${LOG_DIR}/kube-scheduler.log #${CONTROLPLANE_SUDO} "${GO_OUT}/hyperkube" scheduler
cmd/kube-controller-manager cmd/cloud-controller-manager cmd/kubelet cmd/kubeadm cmd/hyperkube go-bindata -rwxr-xr-x 1 root root 4.5M Jul 16 01:20 go2make -rwxr-xr-x 1 root root 202M Jul 16 01:35 hyperkube cmd/kube-controller-manager cmd/cloud-controller-manager cmd/kubelet cmd/kubeadm cmd/hyperkube +++ [0716 00:44:00] Starting docker build for image: kube-proxy-amd64 +++ [0716 00:44:00] Building hyperkube image k8s.gcr.io/hyperkube-amd64:v1.14.11-beta.1.2_c8b135d0b49c44-dirty +++ [0716 00:44:43] Docker builds
registry.aliyuncs.com gcr.azk8s.cn/<repo-name>/<image-name>:<version> gcr.azk8s.cn/google_containers/hyperkube-amd64
Up 5 minutes kube-proxy f28e7a288478 rancher/hyperkube ago Up 6 minutes kubelet efcdb18da1ff rancher/hyperkube Up 6 minutes kube-scheduler 8429869deb70 rancher/hyperkube minutes kube-controller-manager 37373ed9997b rancher/hyperkube k8s_agent_cattle-node-agent-jhqpz_cattle-system_db623f67-5abd-11e8-9894-08002736e2d9_0 cf9903c1df1e rancher/hyperkube
k8s_POD_rke-network-plugin-deploy-job-4vj6d_kube-system_e3bd1d65-5211-11e8-8729-08002787b24d_0 3a3c5d38c5b9 rancher/hyperkube minutes kube-proxy a4b975145ccc rancher/hyperkube minutes kubelet faf8a462fd13 rancher/hyperkube kube-scheduler c9259ead8d90 rancher/hyperkube kube-controller-manager d3128bad8694 rancher/hyperkube
cmd/kube-controller-manager cmd/cloud-controller-manager cmd/kubelet cmd/kubeadm cmd/hyperkube golang bin]# ls apiextensions-apiserver deepcopy-gen e2e.test genman ginkgo hyperkube
latest 8c811b4aec35f 1.15MB k8s-gcrio.azureedge.net/hyperkube-amd64 latest 8c811b4aec35f 1.15MBk8s-gcrio.azureedge.net/hyperkube-amd64 Running nginx 0 1941fb4da154f k8s-gcrio.azureedge.net/hyperkube-amd64
dockerhub.azk8s.cn/library/nginx:1.15 gcr.io gcr.azk8s.cn gcr.azk8s.cn//: gcr.azk8s.cn/google_containers/hyperkube-amd64 quay.azk8s.cn/deis/go-dev:v1.10.0 mcr.microsoft.com mcr.azk8s.cn mcr.azk8s.cn//: mcr.azk8s.cn/oss/kubernetes/hyperkube
=`pwd`/cert 创建 api-server 创建 api-server,这里我们使用 hypekube 镜像, from https://hub.docker.com/r/rancher/hyperkube " spec: containers: - name: apiserver image: ccr.ccs.tencentyun.com/leiwang/hyperkube spec: containers: - name: controller-manager image: ccr.ccs.tencentyun.com/leiwang/hyperkube " spec: containers: - name: scheduler image: ccr.ccs.tencentyun.com/leiwang/hyperkube
kube-controller-manager kubectl kube-proxy.docker_tag kube-scheduler.docker_tag hyperkube mounter [root@jx4-76 bin]# rm -f *_tag *.tar [root@jx4-76 bin]# ls apiextensions-apiserver hyperkube
[x509]: 认证策略 [+] Authorization Mode (rbac, none) [rbac]: 认证模式 [+] Kubernetes Docker image [rancher/hyperkube Strategy [x509]: [+] Authorization Mode (rbac, none) [rbac]: [+] Kubernetes Docker image [rancher/hyperkube