k8s安装

结合网上教程以及自己踩坑,将k8s集群安装记录下来,我的安装环境是虚拟机,如果是真实服务器,可能会有其它无法预知的坑。
1.安装前说明
服务器必须是Centos 7.2及以上,Kubernetes 我们采用1.15.*版本
Docker-ce v18.06.3,Etcd 3.2.9,Flanneld v0.7.0-amd64
TLS 认证通信(所有组件,如etcd、kubernetes master 和node)
RBAC 授权,kubedns、dashboard
注意事项:
Docker安装的版本需与K8s版本批配,不然会出问题
Kubernetes 1.15.2 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.15.1 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.15.0 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.5 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.4 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.3 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.2 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.1 -->Docker版本1.13.1、17.03、17.06、17.09、18.06、18.09
Kubernetes 1.14.0 -->Docker版本1.1


2.环境准备
分别登录三台服务器修改Host Name

hostnamectl set-hostname k8s-master  \#Master节点
hostnamectl set-hostname k8s-node1  \#node1节点
hostnamectl set-hostname k8s-node2  \#node2节点

修改后,我们三台主机如下:

name ip 数量
k8s-master 192.168.152.131 master节点
k8s-node1 192.168.152.132 工作节点1
k8s-node2 192.168.152.133 工作节点2

3.环境初始化
以下步骤在三台服务器上均执行一遍
关闭selinux
setenforce 0
sed -i  's@^\(SELINUX=\).*@\1disabled@' /etc/selinux/config


关闭防火墙及IP TABLE

systemctl  stop firewalld.service
systemctl  disable firewalld.service
systemctl disable iptables
systemctl stop iptables

设置host
vim /etc/hosts
192.168.152.131 k8s-master
192.168.152.132 k8s-node1
192.168.152.133 k8s-node2
4.安装Docker
备份源
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
修改OS源为阿里的仓库
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装常用命令
yum -y install conntrack ipvsadm ipset jq sysstat curl iptables libseccomp wget lrzsz nmap lsof net-tools zip unzip vim telnet
安装依赖项
yum install -y yum-utils device-mapper-persistent-data lvm2
安装Docker源为阿里
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清理缓存
yum clean all
** 重新生成缓存**
yum makecache
再次查看yum源信息
yum repolist
可以看出,我们的源已经更新到aliyun.com。
下一步我们开始安装Docker
安装指定版本的Docker,如果不知道版本名称,可以用如下命令查看
yum list docker-ce --showduplicates | sort -r
我们安装18.06.3版本,k8s对应1.15.*
sudo yum install docker-ce-18.06.3.ce-3.el7 
安装完毕后,我们测试下

启动Docker
sudo chkconfig docker on  #设置开机启动
systemctl start docker
修改Docker镜像仓库为国内镜像
部分系统安装后未生成daemon.json,请执行以下命令
 mkdir -p /etc/docker
 touch /etc/docker/daemon.json 
 vim /etc/docker/daemon.json

配置文件内容格式如下:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":["公网仓库地址"]
}
公网仓库地址以下三个任选其一,也可以找其他开放的仓库地址或自建仓库
https://docker.mirrors.ustc.edu.cn
https://registry.docker-cn.com
http://hub-mirror.c.163.com
修改后刷新daemon.json,重启docker服务使配置生效
systemctl daemon-reload
sudo systemctl restart docker.service
执行完后,可以查看下docker状态及详细信息
service docker status
docker info
如果不能正常启动docker,大概率是daemon.json文件有问题
我检查了好几次该文件的内容,因为是复制的内容,所以符号是中文的,单词也拼写错误,需要注意的几点如下:
1、注意符号是否是英文符号
2、单词是否拼写正确
3、json文件格式是否正确
以上步骤在三台机器均执行完毕后,且Docker状态正常,我们就开始安装K8S集群了


** 资源准备,导入镜像**

采用离线镜像包,避免拉取不到国外镜像会遇到的各种坑

下载好离线包后,上传到root目录,解压然后导入镜像

```shell
cd /root
tar -zxvf suveng-k8s-image.tar.gz
# 导入镜像
docker load -i suveng/k8s.gcr.io-kube-proxy.tar
docker load -i suveng/k8s.gcr.io-kube-apiserver.tar
docker load -i suveng/k8s.gcr.io-kube-controller-manager.tar
docker load -i suveng/k8s.gcr.io-kube-scheduler.tar
docker load -i suveng/k8s.gcr.io-coredns.tar
docker load -i suveng/k8s.gcr.io-etcd.tar
docker load -i suveng/k8s.gcr.io-pause.tar
docker load -i suveng/flannel.tar
# 重新打标签
docker tag suveng/k8s.gcr.io-kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
docker tag suveng/k8s.gcr.io-kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
docker tag suveng/k8s.gcr.io-kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
docker tag suveng/k8s.gcr.io-kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
docker tag suveng/k8s.gcr.io-etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag suveng/k8s.gcr.io-pause:3.1 k8s.gcr.io/pause:3.1
docker tag suveng/k8s.gcr.io-coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

# 删除自己的标签
docker rmi suveng/k8s.gcr.io-kube-apiserver:v1.15.0 
docker rmi suveng/k8s.gcr.io-kube-scheduler:v1.15.0 
docker rmi suveng/k8s.gcr.io-kube-controller-manager:v1.15.0 
docker rmi suveng/k8s.gcr.io-kube-proxy:v1.15.0 
docker rmi suveng/k8s.gcr.io-etcd:3.3.10 
docker rmi suveng/k8s.gcr.io-pause:3.1 
docker rmi suveng/k8s.gcr.io-coredns:1.3.1 
```

###### 在所有节点进行环境配置

```shell
#配置仓库信息
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

# 安装kubelet kubeadm kubectl
yum install kubeadm-1.15.0 kubectl-1.15.0 kubelet-1.15.0 

# 启动kublet,并开机自启动
systemctl start kubelet 
systemctl enable kubelet

# centos7用户还需要设置路由
yum install -y bridge-utils.x86_64

# 加载br_netfilter模块,使用lsmod查看开启的模块
modprobe  br_netfilter  

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# 重新加载所有配置文件
sysctl --system  

# k8s要求关闭swap  (qxl)
swapoff -a && sysctl -w vm.swappiness=0  # 关闭swap
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  # 取消开机挂载swap

```

###### 安装k8s集群master

```shell
# master节点初始化,配置网络,应用flannel网络,注意这里的flannel网络的pod内网地址默认是10.244.0.0/16,在master初始化时指定内网地址 <master_ip>改为master节点的ip
kubeadm init --apiserver-advertise-address <master_ip> --pod-network-cidr 10.244.0.0/16 --kubernetes-version 1.15.0

# 初始化完配置kubectl环境
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 保存打印出来的下面的提示,用于初始化worker节点, 复制自己的, 不是复制这篇文章的
kubeadm join 192.168.152.134:6443 --token fj6m98.tlsh8w89o27ojbqc \
    --discovery-token-ca-cert-hash sha256:e7ae2669a443be902feaf912c115662f3d238c807b41704a803308fdc6625a59

# 配置网络,应用flannel网络,注意这里的flannel网络的pod内网地址默认是10.244.0.0/16,在master初始化时指定内网地址
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

# 检测master节点
kubectl get node

# 查看kubelet的日志
journalctl -fu kubelet
```

###### 安装k8s集群worker

```shell
# 保存打印出来的下面的提示,用于初始化worker节点, 复制自己的, 不是复制这篇文章的
kubeadm join 192.168.0.205:6443 --token fj6m98.tlsh8w89o27ojbqc \
    --discovery-token-ca-cert-hash sha256:e7ae2669a443be902feaf912c115662f3d238c807b41704a803308fdc6625a59
    
#注意 token是有有效期的,如果初始化worker节点时token过期了,可手动生成永久的token
kubeadm token create --ttl=0 --print-join-command
该名令会自动生成加入命令,复制命令加入master节点即可
#生成token后,可以使用kubeadm token list查看
```

###### 检测集群安装情况

```shell
kubectl get node

kubectl get pod -A
```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值