一、虚拟机安装系统
1、下载镜像文件
http://mirror.sfo12.us.leaseweb.net/centos/7.8.2003/isos/x86_64/
二、VMWare新建虚拟机并安装该系统
-
过程略
image.png
三、系统配置
1、开启网卡
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#下面的值从no改为yes
ONBOOT=yes
#保存后重启
2、安装 net-tools包
yum install net-tools
安装完成后执行命令ifconfig
可以看到如下网络信息:
3、用xshell连接
- 以后不需要在vmware内输命令
yum install vim
image.png
4、关闭SElinux
# 临时方法 – 设置系统参数
setenforce 0
# 永久方法 – 需要重启服务器
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器
5、关闭防火墙 & 其他
# 关闭并禁用防火墙
systemctl stop firewalld & systemctl disable firewalld
# 禁用swap
swapoff -a && sysctl -w vm.swappiness=0 # 临时关闭swap
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab # 取消开机挂载swap
# 校正时间
yum install -y ntp
ntpdate cn.pool.ntp.org
6、配置内核参数,将桥接的IPv4流量传递到iptables的链
对于 RHEL/CentOS 7 系统,可以会由于 iptables 被绕过导致网络请求被错误的路由。所以还需执行如下命令保证 sysctl 配置中 net.bridge.bridge-nf-call-iptables 被设为1。
vi /etc/sysctl.conf
#添加以下内容,保存退出
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
#然后执行命令
sysctl --system
7、安装docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker
docker -v
image.png
- 配置镜像源加速
vi /etc/docker/daemon.json
#输入以下内容并保存
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
]
}
四、安装Kubernetes
1、配置源
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
2、安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
image.png
3、克隆一个虚拟机
- 上面的步骤同时也需要在node节点执行一次,为了省事,这里直接复制一个虚拟机出来
image.png
以前的命名为centos-master
,克隆的命名为centos-node
文章参考:
-
[How to Install Kubernetes (k8s) 1.7 on CentOS 7 / RHEL 7(https://www.linuxtechi.com/install-kubernetes-1-7-centos7-rhel7/)
-
Build ASP.NET Core 2.2 applications deployed as Linux containers into an AKS/Kubernetes orchestrator
-
五、节点配置
1、配置host
#在centos-master执行
hostnamectl set-hostname centos-master
cat <<EOF >>/etc/hosts
127.0.0.1 centos-master
EOF
#在centos-node执行
hostnamectl set-hostname centos-node
cat <<EOF >>/etc/hosts
127.0.0.1 centos-node
EOF
确保结果类似下面:
vim /etc/hosts
image.png
1、master初始化
注意:--pod-network-cidr=10.244.0.0/16
是 k8s 的网络插件所需要用到的配置信息,用来给 node 分配子网段。然后我们这边用到的网络插件是 flannel,就是这么配。
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=cri \
--kubernetes-version=1.18.1
- kubernetes-version 换成安装的对应版本号
kubectl version
image.png
-
安装结果
image.png
2、master配置
- 按照上面提示执行命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3、node添加到master集群
- 按照master init完成时提示,在node节点执行命令
kubeadm join 192.168.32.129:6443 --token e88n8t.qvxf9exn5r8dswvj --discovery-token-ca-cert-hash sha256:30d1153fae6a4892819e508fa8483e9047c3a405e55c28436de5c358bf015eaa
- 如果没记住可以用下面命令生成
kubeadm token create --print-join-command
-
node执行结果
image.png - master查看
kubectl get nodes
image.png
4、添加网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 若服务器内无法下载,则先下载,然后
yum install -y lrzsz
上传到服务器在操作
5、NotReady问题排查
kubectl get nodes
node还是不正常运行????
-
kubectl get pods --all-namespaces
image.png - 查看具体error的信息
kubectl describe pod kube-flannel-ds-amd64-qxbrl -n kube-system
image.png
可见是这个image拉取不下来 - 解决
找一台能通的机器,下载镜像
docker pull quay.io/coreos/flannel:v0.12.0-amd64
然后导出到本地
docker save -o flannel.tar quay.io/coreos/flannel:v0.12.0-amd64
上传到master节点,导入镜像
docker load < flannel.tar
-
再次查看,问题解决
image.png -
node也正常了
image.png - 若要使master也作为工作节点
kubectl taint nodes --all node-role.kubernetes.io/master-
6、失败重置
若部署失败,用以下命令重置
- master
kubeadm reset
rm -rf $home/.kube
#剔除节点
kubectl drain centos-node --delete-local-data --ignore-daemonsets
kubectl delete node centos-node
- node
kubeadm reset
systemctl daemon-reload
systemctl restart kubelet
rm -rf /etc/cni/net.d
rm -rf $home/.kube
网友评论