搭建k8s环境2021.12.06

学习基于记录,而不止于记录。

希望自己能坚持下去~

0.写在前面

0.1版本

linux:contos7

docker版本:


image.png

k8s版本:v1.16.3


image.png

0.2搭建之前需要知道

  Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

  Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用(就像canary deployments)。

  现在Kubernetes着重于不间断的服务状态(比如web服务器或者缓存服务器)和原生云平台应用(Nosql),在不久的将来会支持各种生产云平台中的各种服务,例如,分批,工作流,以及传统数据库。

引用出处:Kubernetes概述

1.准备工作

准备至少两台Linux服务器(一主一从)
个人建议如果是虚拟机搭建环境,可以一开始就创建一台虚拟机,作为master,等做到master和node节点配置有差异的地方(止于第3步做完),再使用虚拟机克隆出node节点机器,这样搭建比较快。
为了方便说明我把自己搭建环境放在下面

IP hostname 配置
192.168.10.201 master CPU>=2核,MEMORY>=2G
192.168.10.202 node1 CPU>=2核,MEMORY>=2G
192.168.10.203 node2 CPU>=2核,MEMORY>=2G

1.1.配置静态ip

#编辑网络配置文件,修改为静态ip,所有机器都要配置,如果已经配置则跳过
# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="no"
IPV6_DEFROUTE="no"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e5106d7d-0a53-4c93-a910-db64a032a127"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.10.201
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=8.8.8.8 # 配置访问外网的dns,不配置也可以,根据实际网络情况决定
DNS2=8.8.4.4

# 重启网络
# systemctl restart network

1.2配置hosts

#vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.201 master
192.168.10.202 node1
192.168.10.203 node2

1.3配置hostname

# 对三台机器分别设置hostname,如果搭建之初就已经设置好了,可以跳过此步
hostnamectl set-hostname master

1.4其他

安装阿里镜像源

yum -y install wget

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all && yum makecache

更新contos
yum update -y

安装lrzsz
yum -y install lrzsz

永久关闭Selinux:vim /etc/sysconfig/selinux
将SELINUX=enforcing 改为 SELINUX=disabled,然后重启系统reboot

image.png

关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

时间校对
安装ntp:

yum install -y ntp
ntpdate cn.pool.ntp.org

永久关闭swap

swapoff -a
vim /etc/fstab
image.png

验证swap是否已经关闭:sysctl -p && free -m

image.png

修改内核:vi /etc/sysctl.d/k8s.conf

#查看内核配置文件
cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
#执行指令使其生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

kube-proxy开启ipvs的前置条件

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#查看是否已经正确加载所需的内核模块
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#安装了ipset软件包
yum install ipset
#为了便于查看ipvs的代理规则,安装管理工具ipvsadm
yum install ipvsadm
#确认一下iptables filter表中FOWARD链的默认策略(policy)为ACCEPT,如果不是ACCEPT,则修改iptables  -P FORWARD  ACCEPT
iptables -nvL
image.png

2.安装docker

2.1安装依赖

docker依赖于系统的一些必要的工具,可以提前安装。
yum install -y yum-utils device-mapper-persistent-data lvm2

2.2添加软件源

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

yum list docker-ce --showduplicates | sort -r

2.3安装docker-ce

yum clean all && yum makecache fast
yum -y install docker-ce-18.09.8-3.el7

2.4启动服务

通过systemctl启动服务
systemctl start docker && systemctl enable docker

2.5设置daemon.json文件

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [ "https://registry.docker-cn.com"],
"graph":  "/home/lib/docker"
}

2.6重启docker

systemctl daemon-reload && systemctl restart docker

2.7查看安装版本

docker version
同上0.1中的截图

3.通用操作(master、node节点都要做)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo 
[kubernetes] 
name=Kubernetes 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=1 
repo_gpgcheck=1 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF
yum install -y kubelet-1.16.3 kubeadm-1.16.3 kubectl-1.16.3
systemctl daemon-reload && systemctl enable kubelet.service
vim pullimages.sh
#!/bin/bash
KUBE_VERSION=v1.16.3
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.15-0
DNS_VERSION=1.6.2
username=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:${DNS_VERSION} )

for image in ${images[@]}
do
    docker pull ${username}/${image}
    docker tag ${username}/${image} k8s.gcr.io/${image}
    #docker tag ${username}/${image} gcr.io/google_containers/${image}
    docker rmi ${username}/${image}
done

chmod +x pullimages.sh && ./pullimages.sh

完成到此处,即可克隆出node节点机器了,需要几台就克隆几台,比如准备做一主三从,就克隆三台node机器,然后对其ip、hostname进行相应修改(做法同准备工作部分,其他不需要改)

4.master机器

4.1重置环境(只有环境出问题才执行,第一次搭建不需要执行)

kubeadm reset 

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ipvsadm --clear
rm -f $HOME/.kube/config

4.2初始化

#1.16.3是k8s的版本号,192.168.10.201是master的ip
kubeadm init  --kubernetes-version=1.16.3 --apiserver-advertise-address=192.168.10.201 --pod-network-cidr=10.244.0.0/16

此处可能出现的问题:


image.png

执行成功后,如下,请务必复制保存这段指令,用于后面node节点加入k8s集群环境(下方截图是之前搭建的集群所以ip对不上):


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

4.3安装fannel网络

方法一(须联网,由于网络原因或者地址变动可能失败)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

方法二

#这一步下载yaml依旧可能会失败,所以我在下载成功后保存了一份,后续回贴在后面
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

sed -i 's@quay.io/coreos@quay.azk8s.cn/coreos@g' kube-flannel.yml 

kubectl apply -f kube-flannel.yml

4.4重启服务

systemctl enable kubelet && systemctl start kubelet

4.5确认是否成功

#查看环境是否成功 Running - 说明pod运行正常,ContainerCreating- 正在创建Pod
#因为我的集群已经搭建好了,所以会有node,如果从上面一步步做下来,当前应该只有master
kubectl get pod -o wide -n kube-system -o wide
image.png
kubectl get nodes
image.png

5.node

5.1重置环境(只有环境出问题才执行,第一次搭建不需要执行)

kubeadm reset

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ipvsadm --clear
rm -f $HOME/.kube/config

5.2初始化

将4.2出要求复制的指令粘贴到node机器执行(下方截图是之前搭建的集群所以ip对不上)


image.png

可以看到最后一行,告知我们去master执行kubectl get node查看node是否加入成功
如下,即加入成功。

image.png

6.总结

  本篇只是初涉k8s,后续还会继续深入探究,不定时更新记录。关于文中还有些细节问题,比如配置文件和搭建环境的镜像依赖和下载都是个问题,后续也会有补充说明。

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

推荐阅读更多精彩内容