资讯专栏INFORMATION COLUMN

K8s集群你会安装了吗

IT那活儿 / 840人阅读
K8s集群你会安装了吗

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

现在业务云化越来越普遍,新的云平台核心便是K8S,为了能够跟随业务变革的步伐,慢慢塌上学习K8S之路,未来会和大家一起学习进步。

操作系统环境准备


1. 虚拟机准备

在一般情况都是常规操作,可参考网上资料布署。

2. 配置主机名称

service NetworkManager status
service NetworkManager stop
chkconfig NetworkManager off
hostnamectl set-hostname k8s1
hostnamectl set-hostname k8s2 # 使用这个命令会立即生效且重启也生效
hostnamectl set-hostname k8s3

3. 配置/etc/hosts

  • 192.168.1.200 k8s1
  • 192.168.1.201 k8s2
  • 192.168.1.202 k8s3

4. 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

service iptables status
service iptabesl stop
chkconfig iptables off
备注:生产环境如果存在iptables,需修改解决iptables而导致流量无法正确路由的问题。
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

5. 关闭selinux

vi /etc/selinux/config
添加如下SELINUX=disabled
注释掉SELINUX=enforcing,SELINUXTYPE=targeted

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

6. 生产要关闭swap

  • 关闭swap内存。
  • 使用swap会影响性能。kubelet禁用swap。
1)系统级临时关闭
swapoff -a ,重启后失效。
2)系统级全部关闭
vi /etc/fstab,注释掉swap那一行。
需要重启,重启后不失效。

7. 内核参数修改

  • /proc/sys/net/ipv4/ip_forward这个文件表示是否打开IP转发。
  • cat /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许。
vi /etc/sysctl.conf && sysctl -p
net.ipv4.ip_forward = 1

8. Yum阿里云源配置及基础包安装

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.3.ce-3.el7.x86_64.rpm
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install conntrack socat ###k8s基础包
yum -y install yum-utils device-mapper-persistent-data lvm2
yum -y install docker-ce-18.06.3.ce-3.el7.x86_64.rpm

9. Docker安装

yum remove docker 
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
rm -rf /usr/local/docker
rm -rf /etc/docker
yum -y install yum-utils device-mapper-persistent-data lvm2
yum -y install docker-ce-18.06.3.ce-3.el7.x86_64.rpm

10. 调整docker部分参数cggroup驱动

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": ["https://dkqah25p.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
####默认cgroupfs,k8s官方推荐systemd,否则初始化出现Warning

11. 检查docker参数

检查确认docker的Cgroup Driver信息。

docker info |grep Cgroup

K8S集群安装概述


1. Docker与k8s兼容性

  • 如果kubernetes的版本为1.8-1.11,docker版本必须为1.11.2-1.13.1和docker-ce版本为17.03.x。
  • 如果kubernetes的版本从1.12开始,docker版本必须为17.06/17.09/18.06。
详细版本依赖请参照该地址:
https://stackoverflow.com/questions/53256739/which-kubernetes-version-is-supported-in-docker-version-18-09

2. K8s集群的安装方式

1)kubeadm

通过 kubeadm 安装,需要手工安装 docker,kubelet,kubeadm 等。

2)kind

通过 kind 安装,全自动,无手工步骤,快捷简单,但是节点是基于容器而不是虚拟机的。

3)minikube

通过 minikube 安装。

3. Kubeadm联网安装方式示例

1)K8SYum源配置

cat < /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

2)K8S1作为Master节点安装kubeadm

  • 安装kubelet 和kubeadm以及kubectl

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet ##启动并设置开机启动
systemctl status kubelet
#注意:此时kubelet服务是不正常的,后续当通过kubeadm引导集群、提供kubelet具体的配置时,kubelet服务才会正常。
  • 启动docker

systemctl enable docker && systemctl start docker
  • 更改kublet参数cggroup驱动

vi /etc/sysconfig/kubelet
改为如下参数
KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
  • 最新K8S版本因OS内核版本过低失败,需升级内核

步骤 1:检查已安装的内核版本:
uname -sr
步骤 2:在 CentOS 7 中升级内核:
#CentOS 7 上启用 ELRepo 仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rp
#仓库启用后,你可以使用下面的命令列出可用的内核相关包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装最新的主线稳定内核
yum --enablerepo=elrepo-kernel install kernel-ml
步骤 3:设置 GRUB 默认的内核版本:
打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
重新创建内核配置。
# grub2-mkconfig -o /boot/grub2/grub.cfg
重启使最新内核版本生效。
Shutdown –r now
内核版本升级成功。
  • kubeadm初始化

    docker rmi删除不需要的镜像:
kubeadm init --ignore-preflight-errors=all ##若是虚拟cpu核数少于2个。
kubeadm init --kubernetes-version=v1.23.3  --apiserver-advertise-address=192.168.1.200   --image-repository 
registry.aliyuncs.com/google_containers --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16 --ignore-
preflight-errors=Swap,NumCPU
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.200:6443 --token y83cea.hb60yh33lzdj0zrw
--discovery-token-ca-cert-hash sha256:dbfbc08d087dc6f29db2a7e39407fe2f6d1681152f7eb6e059d10b79ef18acc1
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 查看节点是否正常

systemctl status kubelet
  • 安装网络插件flannel

kubectl apply -f flannel.yml

3. K8S2、K8S3作为Node节点安装

kubeadm join 192.168.1.200:6443 --token h92ghr.eysa3nxmh8t87g84 
--discovery-token-ca-cert-hash 
sha256:636713283be0b8d4f643041bcc27ca9f6b737bb447bbfda3a24b70a9190fed09

4. 验证K8s集群是否正常


END



本文作者:唐田寿

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129464.html

相关文章

  • 如何用 Ansible 部署 Kubernetes 集群到 OpenStack

    摘要:测试后,使用来发布。部署软件组件,启动虚拟机,将虚拟机分类到和节点,然后部署密钥清单。集群自动化集群配置由三个控制。自签证书签署的服务器端证书和它的密钥文件。 我们之前聊了把OpenStack跑在K8S上,如何基于Kubernetes在TCP云端创建私有云解决方法,运用在生产或在OpenStack启动虚拟化。今天换个姿势,我们来看看如何在OpenStack虚拟机上运行Kubernete...

    jiekechoo 评论0 收藏0
  • 使用Kubespray安装k8s集群

    摘要:使用安装集群本文撰写时,的分支不稳定,请使用版本来安装,具体来说就是切换到最新的上。确保每个都安装了在每个上开启,修改,然后重启。可参考这篇文章执行找一台服务器,用来执行,的原理是通过连接到各个执行命令安装集群。 GitHub: https://github.com/chanjarste... 使用Kubespray安装k8s集群 本文撰写时,Kubespray的master分支不稳定...

    svtter 评论0 收藏0
  • 使用Kubespray安装k8s集群

    摘要:使用安装集群本文撰写时,的分支不稳定,请使用版本来安装,具体来说就是切换到最新的上。确保每个都安装了在每个上开启,修改,然后重启。可参考这篇文章执行找一台服务器,用来执行,的原理是通过连接到各个执行命令安装集群。 GitHub: https://github.com/chanjarste... 使用Kubespray安装k8s集群 本文撰写时,Kubespray的master分支不稳定...

    LdhAndroid 评论0 收藏0
  • 7个选择Kubernetes作为你的Docker编排工具的理由

    摘要:如果你正在寻找一种部署容器到你的任一环境中的方法,给你至少个选择它的理由。允许你运行,以及成功完成一定数量的。通过验证我们完成的,上述的情况确认不会发生。每个就是几个小时的问题,而且由拥有者优先化。 对于Docker编制框架来说,Kubernetes 是最强的竞争者之一,这在版本1.2之后更是如此。如果你正在寻找一种部署 Docker 容器到你的任一环境中的方法,Kubernetes给...

    zhiwei 评论0 收藏0
  • 初试k8s,通过rancher自顶向下的学习kubernetes

    摘要:下面我想介绍另一种学习思路,自顶向下的学习。是通过虚拟机创建集群,支持多种虚拟机,我这里用的。对内或对外暴露服务。和的控制器,通过配置的规则来管理。三个主要的命令行程序用了启动集群。需要在所以节点上运行,处理集群内部通讯,类似。 之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持...

    marser 评论0 收藏0
  • 初试k8s,通过rancher自顶向下的学习kubernetes

    摘要:下面我想介绍另一种学习思路,自顶向下的学习。是通过虚拟机创建集群,支持多种虚拟机,我这里用的。对内或对外暴露服务。和的控制器,通过配置的规则来管理。三个主要的命令行程序用了启动集群。需要在所以节点上运行,处理集群内部通讯,类似。 之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持...

    tinyq 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<