MAC K8S集群 v1.17.0 安装

环境准备

使用vbox虚拟机创建3台contos7机器。

  • 三台机需要互通网络。
  • 虚拟机网络设置nat(外网访问)和hostonly(内网ip)指定固定ip。
    三台机分别表示
    k8s-master:192.168.56.100
    k8s-node1:192.168.56.101
    k8s-node2:192.168.56.102

网络配置流程

  • 创建网络
    vbox->管理-> 主机网络管理器


    image.png
  • 虚拟机配置网络
    网卡1


    image.png

    网卡2


    image.png

    进入到虚拟机
    设置固定ip
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

将其设为开机启动即可


image.png

设置静态ip地址

sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

内容如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.56.100 #替换为想要的ip
NETMASK=255.255.255.0
GATEWAY=10.0.2.2 # 网关有可能设置不对导致无法访问外网
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=72a9fc90-8361-4c31-abb9-5f0bc166b66f
DEVICE=enp0s8
ONBOOT=yes

服务器基础配置

更新yum依赖/安装必要依赖

sudo yum -y update
sudo yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp yum-utils device-mapper-persistent-data lvm2

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

关闭selinux

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

关闭swap

swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

iptables配置

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

系统参数设置

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

sysctl --system

完成以上配置可以使用vbox的复制功能复制多两台虚拟机,总共三台。

host设置

三台机配置完成后,配置虚拟机host
master:

sudo hostnamectl set-hostname k8s-master
vi /etc/hosts

/etc/hosts内容

192.168.56.100 k8s-master
192.168.56.101 k8s-node1
192.168.56.102 k8s-node2

node1:

sudo hostnamectl set-hostname k8s-node1
vi /etc/hosts

/etc/hosts内容

192.168.56.100 k8s-master
192.168.56.101 k8s-node1
192.168.56.102 k8s-node2

node2:

sudo hostnamectl set-hostname k8s-node2
vi /etc/hosts

/etc/hosts内容

192.168.56.100 k8s-master
192.168.56.101 k8s-node1
192.168.56.102 k8s-node2

安装docker

三台机都要安装docker,也可以安装了docker后再用vbox的复制功能。

设置docker国内仓库

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

镜像加速设置
从阿里云获取 阿里云加速地址

sudo mkdir -p /etc/docker
cat > /etc/docker/daemon.json <

native.cgroupdriver=cgroupfs确保跟安装的k8s一致即可

安装docker

使用版本19.03.11 版本列表

yum install -y docker-ce-19.03.11 docker-ce-cli-19.03.11 containerd.io

启动docker

sudo systemctl start docker && sudo systemctl enable docker

安装k8s

配置国内阿里yum源

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

安装kubelet,kubectl,kubeadm。v1.17.0-0版本

yum install -y kubeadm-1.17.0-0 kubelet-1.17.0-0 kubectl-1.17.0-0

检查是否生效

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

以上命令执行输出directory not exist,说明是没问题的
启动服务

systemctl enable kubelet && systemctl start kubelet

镜像拉取

查看kubeadm v1.17.0版本依赖

kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.17.8
k8s.gcr.io/kube-controller-manager:v1.17.8
k8s.gcr.io/kube-scheduler:v1.17.8
k8s.gcr.io/kube-proxy:v1.17.8
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5

创建拉取脚本

k8s镜像拉取脚本 k8sInit.sh

#!/bin/bash

set -e

KUBE_VERSION=v1.17.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.4.3-0
CORE_DNS_VERSION=1.6.5

GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

执行脚本

sh k8sInit.sh

查看docker镜像,确认拉取完成

docker images

推动到私有仓库解决被墙

创建脚本 dockerPush.sh

#!/bin/bash

set -e

KUBE_VERSION=v1.17.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.4.3-0
CORE_DNS_VERSION=1.6.5

GCR_URL=k8s.gcr.io
ALIYUN_URL=私有仓库地址

images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do
  docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName
  docker push $ALIYUN_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

登录docker

docker login --username=你的用户名 私有仓库地址

执行脚本 sh dockerPush.sh

以上操作每台虚拟机都要执行

集群部署

master初始化

指定ip,镜像地址

kubeadm init --kubernetes-version=1.17.0 --apiserver-advertise-address=192.168.56.100 --pod-network-cidr=10.244.0.0/16 --image-repository=私有仓库地址

初始化成功后按提示执行

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

记录join token
在node节点执行

kubeadm join 192.168.56.100:6443 --token b4c25e.gki5l7tuua3t8yu5 \
    --discovery-token-ca-cert-hash sha256:82a4902062a7e4c1a104764c77c496ebab1a9e32234d86f955951879a1be50c9

校验是否成功

kubectl cluster-info

查看pod情况

kubectl get pods -n kube-system

健康检查

curl -k https://localhost:6443/healthz

安装calico网络插件

kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
kubectl get pods --all-namespaces -w

node节点join

master节点初始化后输出的join命令,分别在节点执行即可

kubeadm join 192.168.56.100:6443 --token b4c25e.gki5l7tuua3t8yu5 \
    --discovery-token-ca-cert-hash sha256:82a4902062a7e4c1a104764c77c496ebab1a9e32234d86f955951879a1be50c9

如果出现错误提示

[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

执行命令

echo 1 > /proc/sys/net/ipv4/ip_forward

master节点查看节点运行情况

kubectl get nodes
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE    VERSION
k8s-master   Ready      master   4h1m   v1.17.0
k8s-node1    NotReady      14m    v1.17.0
k8s-node2    NotReady      7s     v1.17.0

至此集群搭建完成

常用操作

  • 查看运行详情
kubectl describe [类型] [name]

个人公众号


公众号.jpg

你可能感兴趣的:(MAC K8S集群 v1.17.0 安装)