手把手离线部署kubernetesV1.11.0 集群

手把手离线部署kubernetesV1.11.0 集群,便于了解每个服务是需要什么参数运行的。

 

一、服务器环境

linux:centos7
kubernetes:V1.11.0
etcd:V3.3.8
docker:V1.13.1
各节点所需部署的服务
master:172.16.36.137,部署etcd、kube-apiserver、kube-controller-manager、kube-scheduler
node1:172.16.36.138,部署docker 、kubelet、kube-proxy
各节点需要注意的
1、关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、禁用selinux
setenforce 0
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
3、关闭swap

sudo swapoff -a

#要永久禁掉swap分区,打开如下文件注释掉swap那一行 

# sudo vi /etc/fstab

 

二、安装部署etc,具体步骤参照之前写的文章《etc集群部署》


三、master节点
1、下载kubernetes-server-linux-amd64.tar.gz,官方下载地址:https://kubernetes.io/docs/imported/release/notes/,可能需要翻墙下载
2、解压,tar –zxvf kubernetes-server-linux-amd64.tar.gz
3、将里面的二进制命令,kube-apiserver、kube-controller-manager、kube-scheduler、kubectl、kubeadm复制到/usr/bin下
4、创建配置目录,mkdir –p /etc/kubernetes
5、新建config通用配置文件,vim /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.36.137:8080"


6、新建apiserver配置文件,vim /etc/kubernetes/apiserver
# kubernetes system config
#
# The following values are used to configure the kube-apiserver
#


# The address on the local server to listen to.
KUBE_API_ADDRESS="--address=0.0.0.0"
#KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"


# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"


# Port minions listen on
KUBELET_PORT="--kubelet-port=10250"


# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://172.16.36.137:2379 "


# Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.16.0.0/24"


# default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"


# Add your own!
KUBE_API_ARGS="--service-node-port-range=1-65535 --insecure-bind-address=0.0.0.0"


7、新增apiserver服务,vim /usr/lib/systemd/system/kube-apiserver.service
[Unit]
    Description=Kubernetes API Server
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=network.target
    After=etcd.service
    Wants=etcd.service


    [Service]
    User=root
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/apiserver
    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


8、新建controller-manager配置文件,vim /etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS=""


9、新增controller-manage服务,vim /usr/lib/systemd/system/kube-controller-manager.service
[Unit]
    Description=Kubernetes Controller Manager
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    After=etcd.service
    After=kube-apiserver.service
    Requires=etcd.service
    Requires=kube-apiserver.service


    [Service]
    User=root
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/controller-manager
    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


10、新建scheduler配置文件,vim /etc/kubernetes/scheduler
KUBE_SCHEDULER_ARGS=""


11、新增scheduler服务,vim /usr/lib/systemd/system/kube-scheduler.service
[Unit]
    Description=Kubernetes Scheduler
    Documentation=https://github.com/kubernetes/kubernetes


    [Service]
    User=root
    EnvironmentFile=-/etc/kubernetes/config
    EnvironmentFile=-/etc/kubernetes/scheduler
    ExecStart=/usr/bin/kube-scheduler \
            $KUBE_LOGTOSTDERR \
            $KUBE_MASTER
    Restart=on-failure
    LimitNOFILE=65536


    [Install]
WantedBy=multi-user.target


12、master节点启动所需服务
systemctl daemon-reload
systemctl enable etcd
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl start etcd
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler


13、查看启动情况 systemctl status 服务名 -l
Active: active (running)为正常启动,不正常查看错误提示处理


四、node节点
1、下载kubernetes-node-linux-amd64.tar.gz,官方下载地址:https://kubernetes.io/docs/imported/release/notes/,可能需要翻墙下载
2、解压,tar –zxvf kubernetes-node-linux-amd64.tar.gz
3、将里面的二进制命令,kubelet、kube-proxy、kubectl、kubeadm复制到/usr/bin下
4、创建配置目录,mkdir –p /etc/kubernetes
5、新建config通用配置文件,vim /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.36.137:8080"


6、新建kubelet配置文件,vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=172.16.36.138"
KUBELET_HOSTNAME="--hostname-override=172.16.36.138"
#KUBELET_API_SERVER="--api-servers=http://172.16.36.137:8080"


# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice --cluster-dns=172.16.0.0 --cgroup-driver=systemd --enable-server=true --enable-debugging-handlers=true"


注意:这里需要说明的是kubernetesV1.9 开始已经不支持--api-servers参数,需要指定--kubeconfig=/etc/kubernetes/kubeconfig配置文件来指明master的地址,否则master主机执行kubectl get nodes,会提示找不到节点


7、新建kubelet的另一个配置文件,vim /etc/kubernetes/kubeconfig
apiVersion: v1
kind: Config
users:
- name: kubelet
clusters:
- name: kubernetes
  cluster:
    server: http://172.16.36.137:8080
contexts:
- context:
    cluster: kubernetes
    user: kubelet
  name: service-account-context
current-context: service-account-context


8、新建kubelet服务,vim /usr/lib/systemd/system/kubelet.service
[Unit]
    Description=Kubernetes Kubelet
    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 \
            $KUBE_LOGTOSTDERR \
            $KUBE_LOG_LEVEL \
            $KUBELET_ADDRESS \
            $KUBELET_HOSTNAME \
            $KUBE_ALLOW_PRIV \
            $KUBELET_POD_INFRA_CONTAINER \
            $KUBELET_ARGS
    Restart=on-failure
    KillMode=process


    [Install]
WantedBy=multi-user.target


9、新建kube-proxy配置文件,vim /etc/kubernetes/proxy
# kubernetes proxy config
# default config should be adequate
# Add your own!
 KUBE_PROXY_ARGS="--bind-address=172.16.36.138 --hostname-override=172.16.36.138"


10、新建kube-proxy服务,vim /usr/lib/systemd/system/kube-proxy.service
[Unit]
    Description=Kubernetes Proxy
    Documentation=https://github.com/GoogleCloudPlatform/kubernetes
    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


11、安装docker,yum install docker –y


12、node节点启动所需服务
systemctl daemon-reload
systemctl enable docker
systemctl enable kubelet
systemctl enable kube-proxy
systemctl start docker
systemctl start kubelet
systemctl start kube-proxy r


13、查看启动情况 systemctl status 服务名 -l
Active: active (running)为正常启动,不正常查看错误提示处理


五、验证是否k8s集群部署成功
在master节点,执行kubectl get nodes


 

在master节点,执行kubectl get cs 

 

如想了解更多技术架构文章,扫码关注我的个人公众号以及转发分享哈~

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值