2020-06-26 CentOs minimal 安装k8s

一、虚拟机安装系统

1、下载镜像文件

http://mirror.sfo12.us.leaseweb.net/centos/7.8.2003/isos/x86_64/

image.png

二、VMWare新建虚拟机并安装该系统

  • 过程略


    image.png

三、系统配置

1、开启网卡

vi /etc/sysconfig/network-scripts/ifcfg-ens33
#下面的值从no改为yes
ONBOOT=yes
#保存后重启

2、安装 net-tools包

yum install net-tools

安装完成后执行命令ifconfig可以看到如下网络信息:

image.png

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

  • 参考Docker 安装 mysql
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 < /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 a Kubernetes Cluster on CentOS 7

  • [How to Install Kubernetes (k8s) 1.7 on CentOS 7 / RHEL 7(https://www.linuxtechi.com/install-kubernetes-1-7-centos7-rhel7/)

  • Centos 7搭建k8s集群

  • Kubernetes架构

  • 2019最新k8s集群搭建教程 (centos k8s 搭建) 2019-04-18

  • Install Docker Engine on CentOS

  • 配置docker的镜像为阿里云镜像

  • ASP.NET Core 借助 K8S 玩转容器编排

  • Build ASP.NET Core 2.2 applications deployed as Linux containers into an AKS/Kubernetes orchestrator

  • DOCKER & KUBERNETES : DEPLOYING .NET CORE APP TO KUBERNETES ENGINE AND CONFIGURING ITS TRAFFIC MANAGED BY ISTIO (PART I) - 2020

  • 发布dotNetCore程序到Kubernetes


五、节点配置

1、配置host

#在centos-master执行
hostnamectl set-hostname centos-master
cat <>/etc/hosts
127.0.0.1 centos-master
EOF
#在centos-node执行
hostnamectl set-hostname centos-node
cat <>/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、添加网络插件

参考文章flannel github page

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

你可能感兴趣的:(2020-06-26 CentOs minimal 安装k8s)