前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubeadm 安装 kubernetes

Kubeadm 安装 kubernetes

作者头像
芥末鱿鱼
发布2022-05-05 15:03:37
3870
发布2022-05-05 15:03:37
举报
文章被收录于专栏:玩转 Spring Cloud

Kubeadm 安装 kubernetes

前言

kudeadm

Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践.

kubernetes v1.17.0

kubernetes, 简称K8s, 是用8代替8个字符"ubernete"而成的缩写. Kubernetes 脱胎于 Google 的 Borg 系统,是一个功能强大的容器编排系统. 是一个全新的基于容器技术的分布式架构领先方案. 目的是实现了资源管理的自动化和跨多个数据中心的资源利用率的最大化. 能够节省至少30% 的开发成本及后期的运维成本. Kubernetes 及其整个生态系统(工具、模块、插件等)均使用 Go 语言编写.

参考: https://cloud.tencent.com/developer/article/1512662

快速搭建一个k8s系统

系统要求

  • 至少双核
  • 内存至少4G
  • 服务器版本大于3.10

初始化安装环境

  1. 检测系统核数: grep -c ‘processor’ /proc/cpuinfo
  2. 查看系统内核版本, 需要升级的话升级一下系统内核.
代码语言:javascript
复制
# 查看系统版本
uname -r

# 升级系统内核版本
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.rpm

# 查看当前可用版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

# 安装最新版内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

# 设置grab2
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启
reboot

设置服务名称

代码语言:javascript
复制
# master 节点做下面操作
hostnamectl set-hostname master

# node 节点做下面操作
hostnamectl set-hostname node1 | node2 ...

设置域名映射

代码语言:javascript
复制
# master 节点做下面操作
echo "${ip} master" >> /etc/hosts

# node 节点做下面操作
echo "${ip} node1" >> /etc/hosts

关闭防火墙、selinux 和 swap

代码语言:javascript
复制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

配置内核参数,将桥接的IPv4流量传递到iptables的链

代码语言:javascript
复制
cp ./config/k8s.conf /etc/sysctl.d/
echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables

配置国内 yum 源

代码语言:javascript
复制
yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache

# 配置 kubernetes 源
cp ./config/kubernetes.repo /etc/yum.repos.d/

# 配置 docker 源
cp ./config/docker-ce.repo /etc/yum.repos.d/

安装节点

安装docker

代码语言:javascript
复制
# 卸载已有的docker相关服务
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
sudo yum -y install yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker-ce
sudo yum -y install docker-ce docker-ce-cli containerd.io
# 列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
yum list docker-ce --showduplicates | sort -r
# 安装docker
sudo yum install -y docker-ce-19.03.5 docker-ce-cli-19.03.5 containerd.io
# 复制配置
mkdir -p /etc/docker
cp ./config/daemon.json /etc/docker

# 启动
sudo systemctl start docker
# 开机自启动
systemctl enable docker

安装kubeadm & kubelet & kubectl节点

代码语言:javascript
复制
# 这里指定一下版本号, k8s 差不多每隔 4个月迭代一次版本, 如果想安装最新的, 可执行这条指令: yum install -y kubelet kubeadm kubectl, 同时也要注意一下, dashboard 也要安装对应版本
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet
安装master节点

集群初始化

代码语言:javascript
复制
host_ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'`
kubeadm init --kubernetes-version=1.17.0 \
				--apiserver-advertise-address=${host_ip} \
				--image-repository registry.aliyuncs.com/google_containers \
				--service-cidr=10.1.0.0/16 \
				--pod-network-cidr=10.244.0.0/16
  1. 这里有一个小技巧: 主节点 ip 最好不和物理机 ip 强绑定, 由于先安装了docker, 可以使用docker0 的默认ip: 172.17.0.1, 后期如果做集群迁移的话只要改变物理机 ip 就可以了
  2. 配置kubectl工具
代码语言:javascript
复制
# 不配置的话 kubectl 会没权限
mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config

部署flannel网络

代码语言:javascript
复制
kubectl apply -f ./config/kube-flannel.yml

部署dashboard (1.17 版本的k8s 对应 dashboard:v2.0.0-beta8; 1.16 版本的k8s 对应 dashboard:v2.0.0-beta6)

  1. 创建命名空间
代码语言:javascript
复制
kubectl  create namespace kubernetes-dashboar

生成证书

代码语言:javascript
复制
host_ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'`
mkdir $HOME/certs && cd $HOME/certs
#生成证书
openssl genrsa -out tls.key 2048 
openssl req -new -out tls.csr -key tls.key -subj '/CN=${host_ip}'
openssl x509 -req -in tls.csr -signkey tls.key -out tls.crt 
kubectl create secret generic kubernetes-dashboard-certs --from-file=tls.key --from-file=tls.crt -n kubernetes-dashboard
cd -

创建用户

代码语言:javascript
复制
kubectl create -f ./config/admin-dashboard1.yaml
# 查看token
admin_token=`kubectl get secrets -n kube-system | grep admin-user | awk '{print $1}'`
kubectl describe secrets ${admin_token} -n kube-system
修改默认端口号

k8s 默认容器端口号范围是:30000~32767.

代码语言:javascript
复制
sed -i '24i\ \ \ \ \- --service-node-port-range=1-65535' /etc/kubernetes/manifests/kube-apiserver.yaml

安装node节点

代码语言:javascript
复制
# 到master节点, 输入一下指令,查看加入集群的指令
kubeadm token create --print-join-command

# 然后到 node 节点输入该集群指令
kubeadm join 192.168.9.51:6443 --token m2csqd.xn7p6u9sg6s9hrgv     --discovery-token-ca-cert-hash sha256:3ce27a68518c46ee8ec2fb860328228092c4c60dc45c4859f74b98fd3439b1e9

安装监控组件

kubernetes使用metrics-server提供节点及pod级别的资源监控. Kubernetes从1.8版本开始,CPU、内存等资源的metrics信息可以通过 Metrics API来获取, heapster已经不在维护,转由metrics-server 替代,没安装metrics-server pod命令和自动调度不能正常工作

  • 下载代码 git clone https://github.com/kubernetes-incubator/metrics-server
  • 修改deploy/1.8+/metrics-server-deployment.yaml文件
代码语言:javascript
复制
# 想要查看每一个 pod 所占用的 cpu 资源和 内存资源, 需要安装监控组件
# 修改两个地方, 一个是镜像地址改为: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
# 第二个是添加参数
#- --logtostderr
#- --kubelet-insecure-tls
#- --kubelet-preferred-address-types=InternalIP
# eg:
      containers:
      - name: metrics-server
        image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --logtostderr
          - --kubelet-insecure-tls
          - --kubelet-preferred-address-types=InternalIP

安装监控组件

代码语言:javascript
复制
# metrics-server文件夹下, 有这五个文件: aggregated-metrics-reader.yaml,auth-delegator.yaml,auth-reader.yaml,metrics-apiservice.yaml,metrics-server-deployment.yaml,metrics-server-service.yaml,resource-reader.yaml
kubectl create -f ./metrics-server 

常见安装错误

因系统内核版本太低导致安装异常.

– 升级系统内核版本

dashboard 登录后报很多forbbien的错误,

– 有可能是高版本的 k8s 装了 低版本的 dashboard, 解决办法是装和k8s版本相对应的dashboard

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • kudeadm
      • kubernetes v1.17.0
      • 快速搭建一个k8s系统
        • 系统要求
          • 初始化安装环境
            • 安装节点
              • 安装docker
              • 安装kubeadm & kubelet & kubectl节点
              • 安装node节点
              • 安装监控组件
          • 常见安装错误
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档