kubernetes集群手工安装

kubernetes集群手工安装

这里以一台master节点和一台node节点为例,其中我将master也用作node

一、master节点

先关闭防火墙:

# systemctl stop firewalld
# systemctl disable firewalld
  • 安装etcd
    首先需要在GitHub上下载etcd的二进制文件包,这里以etcd-v3.1.15-linux-amd64.tar.gz为例

我写了个简单的安装etcd的脚本,可以参考一下

# cat install-etcd.sh 
#!/bin/bash
tar xzf etcd-v3.1.15-linux-amd64.tar.gz
cp etcd-v3.1.15-linux-amd64/etcd etcd-v3.1.15-linux-amd64/etcdctl /usr/bin
if [ ! -e /var/lib/etcd ]; then
mkdir /var/lib/etcd
fi
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
if [ ! -e /etc/etcd ]; then
mkdir /etc/etcd
fi
cat > /etc/etcd/etcd.conf << EOF
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://127.0.0.1:2379"
EOF
systemctl daemon-reload
systemctl start etcd.service
systemctl enable etcd.service
etcdctl cluster-health

步骤为:1.将etcd和etcdctl二进制文件复制到/usr/bin目录下,或者其他PATH路径下,只需要在service文件中写正确即可。2.设置服务文件。3.编辑配置文件(详细的参数可以参考官网)

至此,etcd服务安装完成。

  • kube-apiserver服务,首先在GitHub上下载kubernetes的二进制包,这里以1.3.0版本的kubernetes.tar.gz为例

这里也通过脚本来说明:

# cat install-apiserver.sh
tar xzf kubernetes.tar.gz
tar xzf kubernetes/server/kubernetes-server-linux-amd64.tar.gz
cp -a kubernetes/server/bin/kube-apiserver /usr/bin
cat > /usr/lib/systemd/system/kube-apiserver.service << EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
After=etcd.service
[Service]
EnvironmentFile=-/etc/kubernetes/apiserver
User=kube
ExecStart=/usr/bin/kube-apiserver \
        \$KUBE_ETCD_SERVERS \
        \$KUBE_API_ADDRESS \
        \$KUBE_SERVICE_ADDRESSES \
        \$KUBE_ADMISSION_CONTROL \
        \$KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
if [ ! -e /etc/kubernetes ]; then
mkdir /etc/kubernetes
fi
cat > /etc/kubernetes/apiserver << EOF
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0 --insecure-port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS="--service-node-port-range=1-65535"
EOF
systemctl daemon-reload
systemctl start kube-apiserver
systemctl enable kube-apiserver
systemctl is-active kube-apiserver

启动参数:
1). --insecure-bind-address:apiserver绑定主机的非安全ip地址,0.0.0.0表示绑定所有ip地址
2). --insecure-port=8080:apiserver绑定的非安全端口,默认8080
3). --etcd-servers:etcd服务的地址
4). --service-cluster-ip-range:apiserver分配给集群中service的虚拟IP的网段,不能与物理机的IP地址段重合
5). --admission-control:集群中准入控制,详细的见官网
6). --service-node-port-range:端口映射物理机的范围,默认为30000-32767

其他的启动参数详见官方网站

  • kube-controller-manager服务
# cat install-controller-manager.sh 
#!/bin/bash
IPADDR=`ifconfig ens32 | grep '\binet\b' | awk '{print $2}'`
cp kubernetes/server/bin/kube-controller-manager /usr/bin
cat > /usr/lib/systemd/system/kube-controller-manager.service << EOF
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
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=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/kubernetes/controller-manager << EOF
KUBE_CONTROLLER_MANAGER_ARGS="--master=http://$IPADDR:8080"
EOF
systemctl daemon-reload
systemctl start kube-controller-manager
systemctl enable kube-controller-manager
  • kube-scheduler服务
# cat install-scheduler.sh 
#!/bin/bash
IPADDR=`ifconfig ens32 | grep '\binet\b' | awk '{print $2}'`
cp kubernetes/server/bin/kubectl /usr/bin
cp kubernetes/server/bin/kube-scheduler /usr/bin
cat > /usr/lib/systemd/system/kube-scheduler.service << EOF
[Unit]
Description=Kubernetes Scheduler Plugin
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
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.target
EOF
cat > /etc/kubernetes/scheduler << EOF
KUBE_SCHEDULER_ARGS="--master=http://$IPADDR:8080 --logtostderr=false"
EOF
systemctl daemon-reload
systemctl start kube-scheduler
systemctl enable kube-scheduler

至此master必须的服务已经安装完成,接下来的操作是在node节点安装kubeletkube-proxy,如果你想把master节点也当做node的话,那就在master节点上也安装该服务。

  • kubelet安装:kubelet服务依赖docker,请先安装好docker。
cp kubernetes/server/bin/kubelet /usr/bin
if [ ! -e /etc/kubernetes/config ]; then
mkdir /etc/kubernetes/config
fi
if [ ! -e /var/lib/kubelet ]; then
mkdir /var/lib/kubelet
fi
cat > /usr/lib/systemd/system/kubelet.service << EOF
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
        \$KUBELET_API_SERVER \
        \$KUBELET_ADDRESS \
        \$KUBELET_HOSTNAME \
        \$KUBELET_POD_INFRA_CONTAINER \
        \$KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/kubernetes/kubelet << EOF
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.26.11"
KUBELET_API_SERVER="--api-servers=http://192.168.26.11:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
EOF
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
  • kube-proxy安装
# cat install-kube-proxy.sh 
#!/bin/bash
cp kubernetes/server/bin/kube-proxy /usr/bin
if [ ! -e /etc/kubernetes/config ]; then
mkdir /etc/kubernetes/config
fi
cat > /usr/lib/systemd/system/kube-proxy.service << EOF
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy \$KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/kubernetes/proxy  << EOF
KUBE_PROXY_ARGS="--master=http://192.168.26.11:8080 --logtostderr=false"
EOF
systemctl daemon-reload
systemctl start kube-proxy
systemctl enable kube-proxy

在node节点上安装kubelet和kube-proxy的时候注意master节点的地址即可。

现在一个单节点的环境安装完成:

# kubectl get node
NAME            STATUS    AGE
192.168.26.11   Ready     2s

到此,一个kubernetes集群安装完成。在之后的练习中如果发现错误,可参考文章:https://steemit.com/kubernetes/@pmliang/pod

猜你喜欢

转载自blog.csdn.net/qq_28451255/article/details/80558682
今日推荐