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 <<EOF >  /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 <<EOF
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "registry-mirrors": ["替换为自己的阿里云加速器地址"]
}
EOF
sudo systemctl daemon-reload

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 <<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,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   <none>   14m    v1.17.0
k8s-node2    NotReady   <none>   7s     v1.17.0

至此集群搭建完成

常用操作

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

个人公众号


公众号.jpg
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341