使用kubeadm安裝kubernetes

實驗環境介紹

計算機名 IP地址 操作系統及內核版本
k8s-master.mfyxw.com 192.168.80.100 CentOS7.6內核推薦:4.4+及以上
k8s-node1.mfyxw.com 192.168.80.110 CentOS7.6內核推薦:4.4+及以上
k8s-node2.mfyxw.com 192.168.80.120 CentOS7.6內核推薦:4.4+及以上
  1. 各節點均需要都關閉selinux和防火牆firewalld,並把防火牆自啓取消
    命令:
    #設置關閉selinux和防火牆,立即生效
    setenforce 0 && systemctl stop firewalld && systemctl disable firewalld
  2. 各節點均需要修改hosts文件
    命令:
    vi /etc/hosts
    192.168.80.100 k8s-master.mfyxw.com k8s-master
    192.168.80.110 k8s-node1.mfyxw.com k8s-node1
    192.168.80.120 k8s-node2.mfyxw.com k8s-node2
    使用kubeadm安裝kubernetes
  3. 各節點均需要把內核升級到4.4+及以上版本,CentOS 7.x 系統自帶的 3.10.x 內核存在一些 Bugs,導致運行的 Docker、Kubernetes 不穩定
    命令:
    uname -r
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
    使用kubeadm安裝kubernetes
    //查詢有哪些可以更新到哪些內核版本
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    //安裝4.4.X內核 --enablerepo 選項開啓 CentOS 系統上的指定倉庫。默認開啓的是 elrepo,這裏用 elrepo-kernel 替換。
    yum -y install --enablerepo=elrepo-kernel install kernel-lt
    使用kubeadm安裝kubernetes
    //查詢到本機都安裝了哪些內核版本
    awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
    grub2-set-default 0 //設置默認內核使用的版本 也可以編輯/etc/default/grub 文件,把GRUB_DEFAULT=0中的0修改爲對應查詢到的內核的序號
    //或使用命令:grub2-set-default 'CentOS Linux (4.4.197-1.el7.elrepo.x86_64) 7 (Core)'
    reboot //重啓系統,使新內核啓動
    使用kubeadm安裝kubernetes
    再次確認是否更新到最新版本的內核
    uname -r
    使用kubeadm安裝kubernetes
    4.各節點均需要安裝iptables,因爲kube-proxy會向iptables或者ipvs寫規則
    命令:
    #安裝iptables服務
    yum -y install iptables-services
    使用kubeadm安裝kubernetes
    #清空防火牆規則並保存
    命令:
    iptables -F
    service iptables save
    使用kubeadm安裝kubernetes
    #啓動iptables並設置開機啓動
    命令:
    service iptables status
    service iptables start
    systemctl enable iptables
    使用kubeadm安裝kubernetes
    5.各節點均需要下載docker-ce的repo文件放置/etc/yum.repo.d/目錄下
    如沒有wget命令,請先使用yum -y install wget來安裝
    命令:
    cd /etc/yum.repos.d
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    使用kubeadm安裝kubernetes
    6.各節點均需要在/etc/yum.repo.d/目錄下新建一個kubernetes.repo文件
    命令:
    vi /etc/yum.repos.d/Kubernetes.repo
    內容如下:
    [Kubernetes]
    name=Kubernetes repo
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enable=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    使用kubeadm安裝kubernetes
    7.各節點均需要安裝docker-ce,kubeadm,kubelet,kubectl
    命令:
    yum -y install docker-ce kubeadm kubectl kubelet
    使用kubeadm安裝kubernetes
    8.各節點均需要docker鏡像加速器(建議)
    命令:
    mkdir /etc/docker
    vi /etc/docker/daemo.json
    {
    "registry-mirrors": ["https://jltw059v.mirror.aliyuncs.com"]
    }
    使用kubeadm安裝kubernetes
  4. 各節點均需要把docker和kubelet加入開機自啓並啓動docker
    命令:
    systemctl enable docker && systemctl enable kubelet && systemctl start docker
    ps aux | grep docker
    使用kubeadm安裝kubernetes
    10.各節點均需要檢查cat /proc/sys/net/bridge/bridge-nf-call-ip6tables和cat /proc/sys/net/bridge/bridge-nf-call-iptables的值是否都爲1,如果不是,請按如下方法修改
    命令:
    cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
    cat /proc/sys/net/bridge/bridge-nf-call-iptables
    cat <<EOF >/etc/sysctl.d/k8s.conf
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
    使用kubeadm安裝kubernetes
    11.在k8s-master節點新建一個sh腳本
    命令:
    vi k8s-master.sh
    腳本內容如下:
    #!/bin/bash

K8S_VERSION=v1.16.2
ETCD_VERSION=3.3.15-0
PAUSE_VERSION=3.1
DNS_VERSION=1.6.2
FLANNEL_VERSION=v0.11.0-amd64

#pull鏡像到本地
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
docker pull quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION

#修改tag,因k8s默認找鏡像的時候,會去k8s.gcr.io/coredns:XXXXX查找
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$K8S_VERSION k8s.gcr.io/kube-apiserver:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$K8S_VERSION k8s.gcr.io/kube-scheduler:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$K8S_VERSION k8s.gcr.io/kube-controller-manager:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
docker tag quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION quay.io/coreos/flannel:$FLANNEL_VERSION
使用kubeadm安裝kubernetes
給k8s-master.sh腳本添加執行權限
chmod 755 k8s-master.sh
./k8s-master.sh
使用kubeadm安裝kubernetes
12.查詢下是否鏡像下載完成
命令:
docker images -a
使用kubeadm安裝kubernetes
13.在各node節點上新建一個k8s-node.sh腳本文件,
vi /root/k8s-node.sh
添加如下內容
#!/bin/bash

K8S_VERSION=v1.16.2
PAUSE_VERSION=3.1
DNS_VERSION=1.6.2
FLANNEL_VERSION=v0.11.0-amd64
#pull鏡像到本地
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION
docker pull quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION

#修改tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
docker tag quay-mirror.qiniu.com/coreos/flannel:$FLANNEL_VERSION quay.io/coreos/flannel:$FLANNEL_VERSION
使用kubeadm安裝kubernetes
給/root/k8s-node.sh腳本添加可執行權限並執行腳本
命令
chmod 755 /root/k8s-node.sh
使用kubeadm安裝kubernetes
14.在各node節點上查看下載的鏡像
.使用kubeadm安裝kubernetes
使用kubeadm安裝kubernetes
15.在各節點上,把swap交換空間給關閉
命令
swapoff -a //立即生效
編輯配置文件使開機自動不開啓交換空間
vi /etc/fstab在swap交換分區前面添加#號註釋
使用kubeadm安裝kubernetes
16.在k8s-master節點上使用kubeadm初始化(kubernetes版本使用1.16.2是因爲在下載鏡像下載了此鏡像版本)
命令
kubeadm init --kubernetes-version=1.16.2 --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12
使用kubeadm安裝kubernetes
注意:kubernetes要求最低需要雙核CPU(master和node節點都需要雙核)
使用kubeadm安裝kubernetes
節點k8s-master成功完成了初始化
使用kubeadm安裝kubernetes
kubeadm join 192.168.80.100:6443 --token tlxsrq.7cilafwfvxh09k7z \
--discovery-token-ca-cert-hash sha256:8145748aa23b2563580c39065dde084863b59202c209a4566ac2df377b9f66b3
因爲是做實驗,故使用root用戶來運行,不切換到普通用戶運行如下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用kubeadm安裝kubernetes
17.查看pod節點和node節點
命令:
kubectl get pods -n kube-system
kubectl get nodes
在查看node上顯示NotReady(未就緒狀態)是由於flannel沒有啓動
使用kubeadm安裝kubernetes
在flannel的github(https://github.com/coreos/flannel)上說到,kubernetes1.7+以上需要使用如下命令來運行flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
使用kubeadm安裝kubernetes
使用kubeadm安裝kubernetes
flannel已經運行,再次查看nodes和pods -n kube-system
使用kubeadm安裝kubernetes
18.在各node節點上運行如下命令加入集羣
命令:
kubeadm join 192.168.80.100:6443 --token tlxsrq.7cilafwfvxh09k7z \
--discovery-token-ca-cert-hash sha256:8145748aa23b2563580c39065dde084863b59202c209a4566ac2df377b9f66b3
使用kubeadm安裝kubernetes
使用kubeadm安裝kubernetes
19.再次在k8s-master節點上運行如下命令查詢集羣所有節點情況
命令:
kubectl get nodes
使用kubeadm安裝kubernetes

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章