diff --git a/env-apiserver b/env-apiserver new file mode 100644 index 0000000000000000000000000000000000000000..e016c26602507db2b3292ef89e24745d6197d493 --- /dev/null +++ b/env-apiserver @@ -0,0 +1,5 @@ +KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" +KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379,http://127.0.0.1:4001" +KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" +KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" +KUBE_API_ARGS="" diff --git a/env-config b/env-config new file mode 100644 index 0000000000000000000000000000000000000000..822252897af80397fe2c73fb1c590681e3bcb552 --- /dev/null +++ b/env-config @@ -0,0 +1,4 @@ +KUBE_LOGTOSTDERR="--logtostderr=true" +KUBE_LOG_LEVEL="--v=0" +KUBE_ALLOW_PRIV="--allow-privileged=false" +KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/env-controller-manager b/env-controller-manager new file mode 100644 index 0000000000000000000000000000000000000000..84a02ce0c597728ab2180b3bcbb617386e4eb752 --- /dev/null +++ b/env-controller-manager @@ -0,0 +1 @@ +KUBE_CONTROLLER_MANAGER_ARGS="" diff --git a/env-kubelet b/env-kubelet new file mode 100644 index 0000000000000000000000000000000000000000..156a3a0ffe6728c0810b8a4dc2d386af6a9f6f4f --- /dev/null +++ b/env-kubelet @@ -0,0 +1,4 @@ +KUBELET_ADDRESS="--address=127.0.0.1" +KUBELET_HOSTNAME="--hostname-override=127.0.0.1" +KUBELET_KUBECONFIG=/etc/kubernetes/kubelet.kubeconfig +KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false" diff --git a/env-kubelet.kubeconfig b/env-kubelet.kubeconfig new file mode 100644 index 0000000000000000000000000000000000000000..75fe1b0cbb4b87645f94d603dddc976200933aa4 --- /dev/null +++ b/env-kubelet.kubeconfig @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Config +clusters: + - cluster: + server: http://127.0.0.1:8080/ + name: local +contexts: + - context: + cluster: local + name: local +current-context: local + diff --git a/env-proxy b/env-proxy new file mode 100644 index 0000000000000000000000000000000000000000..0bd8a4b00b961aa12d9f8de11806a88aa15ade1b --- /dev/null +++ b/env-proxy @@ -0,0 +1 @@ +KUBE_PROXY_ARGS="" diff --git a/env-scheduler b/env-scheduler new file mode 100644 index 0000000000000000000000000000000000000000..6a609a14e6cb9c4a321be0286a0a2968f858b1ca --- /dev/null +++ b/env-scheduler @@ -0,0 +1 @@ +KUBE_SCHEDULER_ARGS="" diff --git a/kube-apiserver.service b/kube-apiserver.service new file mode 100644 index 0000000000000000000000000000000000000000..e37064d28b6daba8118786e87e47003a26c31ad0 --- /dev/null +++ b/kube-apiserver.service @@ -0,0 +1,27 @@ +[Unit] +Description=Kubernetes API Server +Documentation=https://kubernetes.io/docs/reference/generated/kube-apiserver/ +After=network.target +After=etcd.service + +[Service] +EnvironmentFile=-/etc/kubernetes/config +EnvironmentFile=-/etc/kubernetes/apiserver +User=kube +ExecStart=/usr/bin/kube-apiserver \ + $KUBE_LOGTOSTDERR \ + $KUBE_LOG_LEVEL \ + $KUBE_ETCD_SERVERS \ + $KUBE_API_ADDRESS \ + $KUBE_API_PORT \ + $KUBELET_PORT \ + $KUBE_ALLOW_PRIV \ + $KUBE_SERVICE_ADDRESSES \ + $KUBE_ADMISSION_CONTROL \ + $KUBE_API_ARGS +Restart=on-failure +Type=notify +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/kube-controller-manager.service b/kube-controller-manager.service new file mode 100644 index 0000000000000000000000000000000000000000..33035b742a90b5a290a1828a6ab43d66e7c3b207 --- /dev/null +++ b/kube-controller-manager.service @@ -0,0 +1,18 @@ +[Unit] +Description=Kubernetes Controller Manager +Documentation=https://kubernetes.io/docs/reference/generated/kube-controller-manager/ + +[Service] +EnvironmentFile=-/etc/kubernetes/config +EnvironmentFile=-/etc/kubernetes/controller-manager +User=kube +ExecStart=/usr/bin/kube-controller-manager \ + $KUBE_LOGTOSTDERR \ + $KUBE_LOG_LEVEL \ + $KUBE_MASTER \ + $KUBE_CONTROLLER_MANAGER_ARGS +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/kube-proxy.service b/kube-proxy.service new file mode 100644 index 0000000000000000000000000000000000000000..39fb6231c32b7ba1a76561a1c7a5c4a37bbb5ad5 --- /dev/null +++ b/kube-proxy.service @@ -0,0 +1,18 @@ +[Unit] +Description=Kubernetes Kube-Proxy Server +Documentation=https://kubernetes.io/docs/reference/generated/kube-proxy/ +After=network.target + +[Service] +EnvironmentFile=-/etc/kubernetes/config +EnvironmentFile=-/etc/kubernetes/proxy +ExecStart=/usr/bin/kube-proxy \ + $KUBE_LOGTOSTDERR \ + $KUBE_LOG_LEVEL \ + $KUBE_MASTER \ + $KUBE_PROXY_ARGS +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/kube-scheduler.service b/kube-scheduler.service new file mode 100644 index 0000000000000000000000000000000000000000..09ddb892600f2096d58f5e5f738612c9db224dae --- /dev/null +++ b/kube-scheduler.service @@ -0,0 +1,18 @@ +[Unit] +Description=Kubernetes Scheduler Plugin +Documentation=https://kubernetes.io/docs/reference/generated/kube-scheduler/ + +[Service] +EnvironmentFile=-/etc/kubernetes/config +EnvironmentFile=-/etc/kubernetes/scheduler +User=kube +ExecStart=/usr/bin/kube-scheduler \ + $KUBE_LOGTOSTDERR \ + $KUBE_LOG_LEVEL \ + $KUBE_MASTER \ + $KUBE_SCHEDULER_ARGS +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/kubeadm.conf b/kubeadm.conf new file mode 100644 index 0000000000000000000000000000000000000000..6875e97a54126f691bb89081d26a6877a87ee284 --- /dev/null +++ b/kubeadm.conf @@ -0,0 +1,14 @@ +[Service] +Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --fail-swap-on=false" +Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests" +Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/usr/libexec/cni" +Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local" +Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" +Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" + +ExecStart= +ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS + +Restart=always +StartLimitInterval=0 +RestartSec=10 diff --git a/kubelet.service b/kubelet.service new file mode 100644 index 0000000000000000000000000000000000000000..53d82814b306720d7759449353f5cb8b69cfaf42 --- /dev/null +++ b/kubelet.service @@ -0,0 +1,23 @@ +[Unit] +Description=Kubernetes Kubelet Server +Documentation=https://kubernetes.io/docs/reference/generated/kubelet/ +After=docker.service crio.service + +[Service] +WorkingDirectory=/var/lib/kubelet +EnvironmentFile=-/etc/kubernetes/config +EnvironmentFile=-/etc/kubernetes/kubelet +ExecStart=/usr/bin/kubelet \ + $KUBE_LOGTOSTDERR \ + $KUBE_LOG_LEVEL \ + $KUBELET_KUBECONFIG \ + $KUBELET_ADDRESS \ + $KUBELET_PORT \ + $KUBELET_HOSTNAME \ + $KUBE_ALLOW_PRIV \ + $KUBELET_ARGS +Restart=on-failure +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/kubernetes-1.18.6.tar.gz b/kubernetes-1.18.6.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..bfa97c97b35801cde92f6fdf7f33f2590ea7461c Binary files /dev/null and b/kubernetes-1.18.6.tar.gz differ diff --git a/kubernetes-accounting.conf b/kubernetes-accounting.conf new file mode 100644 index 0000000000000000000000000000000000000000..af7220769a18c69d7b658bbdc1b75cecc2c2e050 --- /dev/null +++ b/kubernetes-accounting.conf @@ -0,0 +1,3 @@ +[Manager] +DefaultCPUAccounting=yes +DefaultMemoryAccounting=yes diff --git a/kubernetes.conf b/kubernetes.conf new file mode 100644 index 0000000000000000000000000000000000000000..0fc3bdf58553ca9a9a82f548b0e6c0e7d4c1df58 --- /dev/null +++ b/kubernetes.conf @@ -0,0 +1 @@ +d /var/run/kubernetes 0755 kube kube - diff --git a/kubernetes.spec b/kubernetes.spec new file mode 100644 index 0000000000000000000000000000000000000000..d0435f996d5d5ae3b5e5a9498b72363861583d92 --- /dev/null +++ b/kubernetes.spec @@ -0,0 +1,247 @@ +%global debug_package %{nil} +%global _buildshell /bin/bash + +Name: kubernetes +Version: 1.18.6 +Release: 1 +Summary: Container cluster management +License: ASL 2.0 +URL: https://k8s.io/kubernetes +Source0: kubernetes-1.18.6.tar.gz +Source1: kube-proxy.service +Source2: kube-apiserver.service +Source3: kube-scheduler.service +Source4: kube-controller-manager.service +Source5: kubelet.service +Source6: env-apiserver +Source7: env-config +Source8: env-controller-manager +Source9: env-kubelet +Source10: env-kubelet.kubeconfig +Source11: env-proxy +Source12: env-scheduler +Source13: kubernetes-accounting.conf +Source14: kubeadm.conf +Source15: kubernetes.conf + +%description +Container cluster management. + +%package master +Summary: Kubernetes services for master host + +BuildRequires: golang systemd rsync go-md2man + +Requires(pre): shadow-utils +Requires: kubernetes-client = %{version}-%{release} + +Conflicts: kubernetes-node < %{version}-%{release} +Conflicts: kubernetes-node > %{version}-%{release} + +%description master +Kubernetes services for master host. + +%package node +Summary: Kubernetes services for node host + +BuildRequires: golang systemd rsync go-md2man + +Requires(pre): shadow-utils +Requires: docker conntrack-tools socat +Requires: kubernetes-client = %{version}-%{release} + +Conflicts: kubernetes-master < %{version}-%{release} +Conflicts: kubernetes-master > %{version}-%{release} + +%description node +Kubernetes services for node host. + +%package kubeadm +Summary: Kubernetes tool for standing up clusters + +Requires: kubernetes-node = %{version}-%{release} +Requires: containernetworking-plugins + +%description kubeadm +Kubernetes tool for standing up clusters. + +%package client +Summary: Kubernetes client tools + +BuildRequires: golang + +%description client +Kubernetes client tools. + +%package help +Summary: Help documents for kubernetes + +%description help +Help documents for kubernetes. + +%prep +%setup -q -n kubernetes-1.18.6 +mkdir -p src/k8s.io/kubernetes +mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. + +%build +pushd src/k8s.io/kubernetes/ +export KUBE_GIT_TREE_STATE="clean" +export KUBE_GIT_COMMIT=%{commit} +export KUBE_GIT_VERSION=v{version} +export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace + +make WHAT="cmd/kube-proxy" +make WHAT="cmd/kube-apiserver" +make WHAT="cmd/kube-controller-manager" +make WHAT="cmd/kubelet" +make WHAT="cmd/kubeadm" +make WHAT="cmd/kube-scheduler" +make WHAT="cmd/kubectl" + +bash ./hack/generate-docs.sh +popd + +%install +pushd src/k8s.io/kubernetes/ +. hack/lib/init.sh +kube::golang::setup_env +output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" + +# install binary +install -m 755 -d %{buildroot}%{_bindir} +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubelet +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubectl + +# install service +install -d -m 0755 %{buildroot}%{_unitdir} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE1} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE2} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE3} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE4} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE5} + +# install env +%define remove_prefix() %(echo -n %1|sed 's/.*env-//g') +install -d -m 0755 %{buildroot}%{_sysconfdir}/kubernetes +install -d -m 0700 %{buildroot}%{_sysconfdir}/kubernetes/manifests +install -m 644 -T %{SOURCE6} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE6}} +install -m 644 -T %{SOURCE7} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE7}} +install -m 644 -T %{SOURCE8} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE8}} +install -m 644 -T %{SOURCE9} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE9}} +install -m 644 -T %{SOURCE10} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE10}} +install -m 644 -T %{SOURCE11} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE11}} +install -m 644 -T %{SOURCE12} %{buildroot}%{_sysconfdir}/kubernetes/%{remove_prefix %{SOURCE12}} + +# install conf +install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d +install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE13} +install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d +install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE14} +install -d -m 0755 %{buildroot}%{_tmpfilesdir} +install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} %{SOURCE15} + +# install man +install -d %{buildroot}%{_mandir}/man1 +install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 + +install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ +%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl + +install -d %{buildroot}%{_sharedstatedir}/kubelet +mkdir -p %{buildroot}/run +install -d -m 0755 %{buildroot}/run/kubernetes/ +popd + +mv src/k8s.io/kubernetes/*.md . +mv src/k8s.io/kubernetes/LICENSE . + +%files + +%files help +%{_mandir}/man1/* + +%files master +%license LICENSE +%doc *.md +%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver +%{_bindir}/kube-controller-manager +%{_bindir}/kube-scheduler +%{_unitdir}/kube-apiserver.service +%{_unitdir}/kube-controller-manager.service +%{_unitdir}/kube-scheduler.service +%dir %{_sysconfdir}/kubernetes +%config(noreplace) %{_sysconfdir}/kubernetes/apiserver +%config(noreplace) %{_sysconfdir}/kubernetes/scheduler +%config(noreplace) %{_sysconfdir}/kubernetes/config +%config(noreplace) %{_sysconfdir}/kubernetes/controller-manager +%{_tmpfilesdir}/kubernetes.conf +%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/kubernetes + +%files node +%license LICENSE +%doc *.md +%{_bindir}/kubelet +%{_bindir}/kube-proxy +%{_unitdir}/kube-proxy.service +%{_unitdir}/kubelet.service +%dir %{_sharedstatedir}/kubelet +%dir %{_sysconfdir}/kubernetes +%dir %{_sysconfdir}/kubernetes/manifests +%config(noreplace) %{_sysconfdir}/kubernetes/config +%config(noreplace) %{_sysconfdir}/kubernetes/kubelet +%config(noreplace) %{_sysconfdir}/kubernetes/proxy +%config(noreplace) %{_sysconfdir}/kubernetes/kubelet.kubeconfig +%config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf +%{_tmpfilesdir}/kubernetes.conf +%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/kubernetes + +%files kubeadm +%license LICENSE +%doc *.md +%{_bindir}/kubeadm +%dir %{_sysconfdir}/systemd/system/kubelet.service.d +%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf + +%files client +%license LICENSE +%doc *.md +%{_bindir}/kubectl +%{_datadir}/bash-completion/completions/kubectl + +%pre master +getent group kube >/dev/null || groupadd -r kube +getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ + -c "Kubernetes user" kube + +%post master +%systemd_post kube-apiserver kube-scheduler kube-controller-manager + +%preun master +%systemd_preun kube-apiserver kube-scheduler kube-controller-manager + +%postun master +%systemd_postun kube-apiserver kube-scheduler kube-controller-manager + +%pre node +getent group kube >/dev/null || groupadd -r kube +getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ + -c "Kubernetes user" kube + +%post node +%systemd_post kubelet kube-proxy + +%preun node +%systemd_preun kubelet kube-proxy + +%postun node +%systemd_postun kubelet kube-proxy + +%changelog +* Sat Jul 25 2020 xiadanni - 1.18.6-1 +- Package init