全程无坑手撸k8s集群
主机规划10.210.13.4istio-master10.210.13.43istio-node110.210.13.12istio-node2安装操作系统CentOS Linux release 7.6.1810 (Core)使用命令查看操作系统版本cat /etc/redhat-release如果你是云主机直接选择对应版本即可。涉及组件较多,可能版本上的偏差会出现不确定性问题设置域名vi /
主机规划
10.210.13.4 istio-master
10.210.13.43 istio-node1
10.210.13.12 istio-node2
安装操作系统
CentOS Linux release 7.6.1810 (Core)
使用命令查看操作系统版本
cat /etc/redhat-release
如果你是云主机直接选择对应版本即可。涉及组件较多,可能版本上的偏差会出现不确定性问题
设置域名
vi /etc/hosts
黏贴以下内容,每台机器都指定,host配置与hostname没有必然关系,设置成一致为了习惯以及避免一些相关性问题。
10.210.13.4 istio-master
10.210.13.43 istio-node1
10.210.13.12 istio-node2
设置hostname
在各自对应主机上执行,然后退出终端重新进入,就会发现hostname已变更
hostnamectl set-hostname istio-master
hostnamectl set-hostname istio-node1
hostnamectl set-hostname istio-node2
docker环境搭建
docker安装相对而言比较简单,先卸载本机上得docker
以下是不同情况下的查找和卸载
- 使用yum 安装得,使用如下命令查看和卸载
yum list installed|grep docker yum remove docker-xxxx
- 自行安装,如果有运行,使用
ps -ef|grep docker|grep -v grep
查看命令路径 - 如果没有启动直接 whereis docker
- 最后还可以暴力查找 find / -name “docker”
暴力删除docker相关的内容
find / -type d -name "*docker*" -exec rm -rf {} \;
发现大量docker0文件无法删除
删除docker0虚拟网卡数据
下线docker0网卡
ifconfig docker0 down
安装bridge-utils
yum -y install bridge-utils
删除docker0 (bridgectl delete bridge docker0)
brctl delbr docker0
再次执行find 命令查找docker 发现完全卸载干净了
find / -name "*docker*"
当然如果你的机器很干净,也可以稍微检查下有可能有些镜像自带集成了docker,但是版本较旧或者过新都可能不稳定
所以我们选择一些稳定版本避免踩别人踩过的坑,当然踩坑也是一种学习的过程。
18.09.9
这个是目前各大云厂商踩完的坑验证的较为稳定的版本
接下来我们打开docker官方文档 docker docs
按照官方文档的步骤来安装,官方有各种系统的安装方式,我们使用centos
添加yum相关工具用于添加docker-ce.repo
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
查看repo
cat /etc/yum.repos.d/docker-ce.repo
替换docker源为清华镜像站,替换完可以再次查看确认
sed -i s@download.docker.com@mirrors.tuna.tsinghua.edu.cn/docker-ce@g /etc/yum.repos.d/docker-ce.repo
更新yum缓存,不要执行 yum update 会更新系统内核
yum -y makecache fast
安装对应版本docker-ce-18.09.9
yum -y install docker-ce-18.09.9
安装完成启动docker,添加开机启动
systemctl start docker
systemctl enable docker
更改镜像仓库为阿里云
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
重载配置
systemctl daemon-reload
测试docker是否配置正确
docker run --rm alpine echo "hello docker"
输出hello docker 说明配置正常,docker安装完成
k8s环境搭建
主机规划中我们已经配置完host和hostname
所以我们直接开始安装k8s,打开官网kubectl安装
我们选择centos
配置kubernetes仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
需要修改仓库地址为阿里云,避免被墙,地址为mirrors.aliyuncs.com/kubernetes
修改仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyuncs.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyuncs.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyuncs.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
如果阿里不行也可以改为清华镜像站
sed -i 's@mirrors.aliyuncs.com@mirrors.tuna.tsinghua.edu.cn@g' kubernetes.repo
关闭并查看selinux
setenforce 0
cat /etc/sysconfig/selinux
如果配置文件中还是enforcing 需要改为disabled
安装k8s相关工具
- kubectl-1.19.16-0
- kubeadm-1.19.16-0
- kubelet-1.19.16-0
由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 所以添加 --nogpgcheck 不检查gpg
yum install -y --nogpgcheck kubectl-1.19.16-0 kubeadm-1.19.16-0 kubelet-1.19.16-0
安装完成查看安装的包
yum list installed |grep kube
启动kubelet
systemctl start kubelet
systemctl enable kubelet
关闭防火墙
关闭swap交换区
swapoff -a
sed -ri 's@(^/.*swap.*)@#\1@g' /etc/fstab
swapoff -a
#查看free -m
安装ip_vs ip虚拟服务器
直接安装
#查看 lsmod |grep ip_vs
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
配置k8s.ipvs.conf文件
tee /etc/modules-load.d/k8s.ipvs.conf <<-'EOF'
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
EOF
开启iptables forward
我们用的是ip_vs方案但是这个还是开启来吧免得有问题
先查看
iptables -L -n
并修改docker执行后操作
iptables -P FORWARD ACCEPT
sed -i '/ExecStart/a ExecStartPost=/sbin/iptables -P FORWARD ACCEPT' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
配置kubelet
tee /etc/sysconfig/kubelet <<-'EOF'
KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF
创建master节点
kubeadm init --apiserver-advertise-address=10.210.13.4 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.16 --pod-network-cidr=10.245.0.0/16
这里可能会报错,根据具体错误进行排查,我这边是之前机器安装过所有报了个etcd端口被占用错误。
根据提示配置.kube
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
测试kubectl
kubectl get nodes
此时状态为NotReady,说明配置问题。
根据提示添加节点
kubeadm join 10.210.13.4:6443 --token mxo6v4.6t26hvmnmzk179x6 \
--discovery-token-ca-cert-hash sha256:3c61682bcd8e645bcb78ffe328a2cd1386b75ec4a21e35c2ea3a142240c32adf
查看pod
kubectl get pods -A
发现coreDns状态为pending
回到官网coredns pending state
告诉我们安装网络
配置网络
这里有非常多的解决方案
- ACI
- calico
- canal
- cilium
- CNI-Genie
- contiv
- contrail
- flannel
- knitter
- multus
- ovn-kubernetes
- ovn4NFV-k8s-plugin
- NSX-T
- Nuage
- Romana
- Weave Net
先选一个耳熟能详的吧,用Calico或者Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
这边直接使用网络的流文件,如果你需要修改网卡之类的需要将文件下载下来进行修改
查看安装情况
kubectl get pods -A
可以看到镜像拉取失败,没关系多等一会儿就好了
安装完成后
[root@istio-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
istio-master Ready master 10h v1.19.16
istio-node1 Ready <none> 25m v1.19.16
istio-node2 Ready <none> 25m v1.19.16
安装过程如果还遇到什么其它问题可以看看官方的避坑指南
更多推荐
所有评论(0)