kubeadm安装kubernetes 单master集群

olei 1,787 views 0

以双节点为例
192.168.1.2
192.168.1.3

准备

若未明确说明,均为所有主机都操作

设置主机名以及hosts文件

  • 设置主机名
    # 分别设置为master、node1
    hostnamectl set-hostname master
    hostnamectl set-hostname node1
  • 修改hosts(两主机运行)
192.168.1.2 master
192.168.1.3 node1

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭SELINUX

# 临时关闭
setenforce 0

# 永久关闭
vi /etc/selinux/config
#SELINUX修改为disabled
SELINUX=disabled 

关闭swap

swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

配置系统参数

# 制作配置文件
$ cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF
# 生效文件
$ sysctl -p /etc/sysctl.d/kubernetes.conf

安装依赖

yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

安装docker

yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install docker-ce

# 安装指定版本的docker,比如17.03.2-ce
yum list docker-ce --showduplicates |sort -r

kubeadm安装kubernetes 单master集群

  • 安装指定版本
yum install docker-ce-selinux-17.03.2.ce-1.el7.centos -y
yum install docker-ce-17.03.2.ce-1.el7.centos -y
  • 启停docker
    systemctl start docker
    systemctl enable docker
  • 更改dockercgroup-driver
    # 查看
    docker info | grep -i cgroup
    # 默认是cgroup
    # 更改为systemd
    vi /etc/docker/daemon.json
    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    # 重新启动docker
    systemctl restart docker

安装kubeadmkubeletkubectl

以安装v1.11.2版本为例

  • 配置源
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
  • 查找版本号并安装
    yum makecache fast
    yum list kubeadm --showduplicates | sort -r
    # 其他类似
    yum install kubeadm-1.11.2-0 kubelet-1.11.2-0 kubectl-1.11.2-0 -y
    # 最新版可以直接使用
    yum install kubeadm kubelet kubectl -y
  • 开机自动启动kubelet
    systemctl enable kubelet
    systemctl start kubelet # 此时kubelet状态不是Starting,可以不用纠结

准备必要的镜像

  • 查看必须要安装的镜像
$ kubeadm config images list --kubernetes-version v1.11.2

k8s.gcr.io/kube-apiserver-amd64:v1.11.2
k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
k8s.gcr.io/kube-scheduler-amd64:v1.11.2
k8s.gcr.io/kube-proxy-amd64:v1.11.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd-amd64:3.2.18
k8s.gcr.io/coredns:1.1.3
  • 各个节点安装镜像脚本
#!/bin/bash

images=(
     kube-apiserver-amd64:v1.11.2
     kube-controller-manager-amd64:v1.11.2
     kube-scheduler-amd64:v1.11.2
     kube-proxy-amd64:v1.11.2
     pause:3.1
     etcd-amd64:3.2.18
     coredns:1.1.3

)
for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done

初始化集群(只master节点执行)

初始化

kubeadm init --kubernetes-version=v1.11.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.2 --token-ttl 0

--token-ttl:设置为0表示生成的token不过期

  • 会生成类似如下的输出
    kubeadm安装kubernetes 单master集群

记住最下面的一行命令行,类似:

kubeadm join 192.168.1.2:6443 --token hu2clf.898he8fnu64w3fur --discovery-token-ca-cert-hash sha256:2a196bbd77e4152a700d294a666e9d97336d0f7097f55e19a651c19e03d340a4

允许使用kubectl访问集群

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

节点加入集群(在node节点上执行)

kubeadm join 192.168.1.2:6443 --token hu2clf.898he8fnu64w3fur --discovery-token-ca-cert-hash sha256:2a196bbd77e4152a700d294a666e9d97336d0f7097f55e19a651c19e03d340a4

重新创建集群

kubeadm reset
kubeadm init xxx.xxxxx

安装网络插件flannel

mkdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# vi kube-flannel.yml,将里面的Network网段修改为跟上面kubeadm init后面紧跟的--pod-network-cidr一样的网段,不然会报错
kubectl apply -f kube-flannel.yml
  • 查看状态
    kubectl get pod --all-namespaces

    kubeadm安装kubernetes 单master集群

    kubectl get nodes

    kubeadm安装kubernetes 单master集群

设置master node参与工作负载(只在master节点执行)

  • 允许master节点部署pod,使用命令如下:
    kubectl taint nodes --all node-role.kubernetes.io/master-

    输出如下

node "k8s" untainted
# 输出error: taint “node-role.kubernetes.io/master:” not found错误忽略。
  • 禁止master部署pod
    kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule

    集群中移除Node

  • 在master节点上执行
    kubectl drain node1 --delete-local-data --force --ignore-daemonsets
    kubectl delete node node1
  • node1上执行
    kubeadm reset
    ifconfig cni0 down
    ip link delete cni0
    ifconfig flannel.1 down
    ip link delete flannel.1
    rm -rf /var/lib/cni/

其他

  • 重新创建jointoken
    kubeadm token create --print-join-command

官方推荐高可用部署方案

Kubernetes高可用部署方案–静态Pod篇

4年前 (2020-03-23) 1
Kubernetes高可用部署方案–静态Pod篇

第三方快速搭建高可用部署方案

快速安装高可用kubernetes集群

4年前 (2020-01-21) 0
快速安装高可用kubernetes集群

发表评论 取消回复
表情 图片 链接 代码

分享