K8S之二进制包安装
#kubernetes
二进制安装
Master节点安装 etcd kube-controller-manager kube-scheduler kubectl
1、下载二进制包 https://github.com/kubernetes/kubernetes/releases
本次以1.14.2版本为例
tar -zxf kubernetes.tar.gz
cd kubernetes
cluster/get-kube-binaries.sh2、下载安装etcd数据库服务 本次以3.3.13版本为例
下载二进制地址:https://github.com/etcd-io/etcd/releases
tar -zxf etcd-v3.3.13-linux-amd64.tar.gz
cp etcd-v3.3.13-linux-amd64/etcd /usr/bin/
cp etcd-v3.3.13-linux-amd64/etcdctl /usr/bin/
vi /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/ #数据目录,需要提前创建
EnvironmentFile=-/etc/etcd/etcd.conf #配置文件,可有可无
ExecStart=/usr/bin/etcd --advertise-client-urls=http://127.0.0.1:2379,http://172.23.210.22:2379 -listen-client-urls=http://127.0.0.1:2379,http://172.23.210.22:2379 #指定监听地址,127地址是为了方便etcdctl命令连接
[Install]
WantedBy=multi-user.target3、安装kube-apiserver kube-controller-manager kube-scheduler服务 进到之前的k8s目录,把执行cluster/get-kube-binaries.sh下载的文件解压,
cd kubernetes/server/
tar -zxf kubernetes-server-linux-amd64.tar.gz
cp kubernetes/server/bin/kube-apiserver /usr/bin/
cp kubernetes/server/bin/kube-controller-manager /usr/bin/
cp kubernetes/server/bin/kube-scheduler /usr/bin/kube-apiserver
vi /usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
After=etcd.service
Wants=etcd.service
[Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetkube-controller-manager
vi /usr/lib/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
EnvironmentFile=/etc/kubernetes/controller-manager
ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=no-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetkube-scheduler
vi /usr/lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Controller Manager
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
EnvironmentFile=/etc/kubernetes/scheduler
ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetkubeconfig
mkdir /etc/kubernetes/
vi /etc/kubernetes/kubeconfig
apiVersion: v1
kind: Config
users:
- name: client
user:
clusters:
- name: default
cluster:
server: http://172.23.210.22:8080
contexts:
- context:
cluster: default
user: client
name: default
current-context: defaultapiserver
vi /etc/kubernetes/apiserver
KUBE_API_ARGS="--etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota --logtostderr=false --log-dir=/var/log/kubernetes --v=0"controller-manager
vi /etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/log/kubernetes --v=0"scheduler
vi /etc/kubernetes/scheduler
KUBE_SCHEDULER_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/log/kubernetes --v=0"启用服务
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-schedulerkubectl 直接将下载好的二进制文件复制到/usr/bin/目录下即可
cp kubernetes/client/bin/kubectl /usr/bin/Node节点
kubelet
# kubelet
[Unit]
Description=Kubernetes Kuberlet Server
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet $KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
vi /etc/kubernetes/kubelet
KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=172.23.210.23 --logtostderr=false --log-dir=/var/log/kubernetes --v=0" # 172.23.210.23为节点名称,建议用本机IPkube-proxy
# kube-proxy
[Unit]
Description=Kubernetes Kube-proxy Server
After=network.target
Requires=network.target
[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
vi /etc/kubernetes/proxy
KUBE_PROXY_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/log/kubernetes --v=2"flannel网络插件:需要在所有node节点上安装 版本:v0.11.0 下载地址:https://github.com/coreos/flannel/releases
二进制文件
tar -zxf flannel-v0.11.0-linux-amd64.tar.gz
cd flannel-v0.11.0-linux-amd64/
mv flanneld /usr/bin/
mv mk-docker-opts.sh /usr/bin/flanneld服务控制配置
vi /usr/lib/systemd/system/flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} $FLANNEL_OPTIONS
[Install]
RequiredBy=docker.service
WantedBy=multi-user.targetflanneld配置文件
vi /etc/sysconfig/flanneld
FLANNEL_ETCD="http://172.23.210.22:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"服务启动 先到etcd服务器上执行
etcdctl set /coreos.com/network/config '{ "Network": "169.169.0.0/16" }'然后在所有的NODE上执行
systemctl stop docker
systemctl start flanneld
mk-docker-opts.sh -c # 将flannel获得的子网信息写入/run/docker_opts.env
vi /usr/lib/systemd/system/docker.service
EnvironmentFile=/run/docker_opts.env # 指定$DOCKER_OPTS的来源
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS # 增加$DOCKER_OPTS 这个启动参数
systemctl start docker
ip ad #可以看到docker0网卡下会有一个169.169.*.1/24 的IP设置服务开机自启
systemctl enable flanneld
echo "mk-docker-opts.sh -c" >> /etc/rc.local # 将mk-docker-opts.sh加入开机自启,以便系统重启后docker0的ip设置不会丢失
chmod +x /etc/rc.d/rc.local # 默认rc.local文件没有执行权限,所以需要给该文件添加执行权限,才能实现该文件中配置的命令开机执行最后更新于