kubernetes(一)kubeadm安装k8s1.14

0.升级内核

运行以下shell, 如果内核版本大于4.14请忽略

#!/bin/bash

# 升级内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm ;yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y

# 检查默认内核版本是否大于4.14,否则请调整默认启动参数
grub2-editenv list
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

# 设置升级后的最新版本
grub2-set-default 0

# 更新配置
grub2-mkconfig -o /boot/grub2/grub.cfg


# 重启以更换内核
reboot

1.安装docker

如已安装,则需查看kubenetes1.14.1对应的版本是否支持对应的docker版本 https://kubernetes.io/docs/setup/cri/。

如果不对应,则需卸载docker

卸载docker

1.查询安装过的包

yum list installed | grep docker
containerd.io.x86_64                1.2.5-3.1.el7              @docker-ce-stable
docker-ce.x86_64                    3:18.09.5-3.el7            @docker-ce-stable
docker-ce-cli.x86_64                1:18.09.5-3.el7            @docker-ce-stable

2.删除安装的软件包

yum -y remove docker-engine.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64  

3.删除镜像/容器等

rm -rf /var/lib/docker

安装docker

yum install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
##查看可安装的docker版本,还要支持对应的k8s版本
yum list docker-ce --showduplicates|grep "^doc"|sort -r
## Install Docker CE.
yum update -y && yum install docker-ce-18.09.5
## Create /etc/docker directory.
mkdir /etc/docker

# Setup daemon.
cat > /etc/docker/daemon.json <

2.基础环境

关闭防火墙、selinux、swap等操作 直接执行以下脚本

# 所有主机:基本系统配置
 
# 关闭Selinux/firewalld
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
 
# 关闭交换分区
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
 
# 设置网桥包经IPTables,core文件生成路径
echo """
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
""" > /etc/sysctl.conf
sysctl -p
 
# 同步时间
yum install -y ntpdate
ntpdate -u ntp.api.bz

3安装k8s相关组件

安装kubernetes相关组件 kbeadm kubelet kubectlu

#添加kubernetes.repo文件并写入以下内容
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
 
#yum命令安装
yum install kubectl<-指定版本> kubelet<-指定版本> kubernetes-cni<-指定版本> kubeadm<-指定版本>
 
#设置开机启动
systemctl enable kubelet.service

利用kubeadm命令查看当前kubernetes需要的镜像

kubeadm config images list
 
#显示以下内容
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

制作拉取脚本并将脚本修改为需要的tag名称,随后删除无用的镜像

#!/bin/bash
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
DNS_VERSION=1.3.1
username=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(
        kube-proxy-amd64:${KUBE_VERSION}
        kube-scheduler-amd64:${KUBE_VERSION}
        kube-controller-manager-amd64:${KUBE_VERSION}
        kube-apiserver-amd64:${KUBE_VERSION}
        pause:${KUBE_PAUSE_VERSION}
        etcd-amd64:${ETCD_VERSION}
        coredns:${DNS_VERSION}
        )
for image in ${images[@]}
do
NEW_IMAGE=`echo ${image}|awk '{gsub(/-amd64/,"",$0);print}'`
echo ${NEW_IMAGE}
docker pull ${username}/${image}
docker tag ${username}/${image} k8s.gcr.io/${NEW_IMAGE}
docker rmi ${username}/${image}
done

接下来就可以初始化master节点了(仅master节点执行)

# --token-ttl 0  默认token的有效期为24小时,当过期之后,该token就不可用了,需要重新生成token,此处设置为永不过期
# --pod-network-cidr=10.244.0.0/16,选择flannel作为Pod网络插件
 
kubeadm init   --kubernetes-version=v1.14.0   --pod-network-cidr=10.244.0.0/16  --apiserver-advertise-address=192.168.66.100  --token-ttl 0  --ignore-preflight-errors=Swap

kubeadm init   --kubernetes-version=v1.14.0   --pod-network-cidr=10.244.0.0/16  --apiserver-advertise-address=192.168.66.100  --token-ttl 0  --ignore-preflight-errors=Swap

//记录输出内容,添加节点时会用到token信息
kubeadm join 192.168.66.100:6443 --token n0kt4i.i60jw3d7veicguux \
    --discovery-token-ca-cert-hash sha256:ef6c423dd699d3a0cd0620ba466573d9764f59d038377fc02e23cd71cd67034f

注意:使用不同的网络,init的时候-pod-network-cidr=10.244.0.0/16是不一样的,详情 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

为了在节点上可以使用kubectl命令,也可做以下设置

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

配置flannel网络(仅主节点执行)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

添加子节点(子节点上执行)

kubeadm join 192.168.66.100:6443 --token n0kt4i.i60jw3d7veicguux \
    --discovery-token-ca-cert-hash sha256:ef6c423dd699d3a0cd0620ba466573d9764f59d038377fc02e23cd71cd67034f

你可能感兴趣的:(Devops)