JDKHOME JDKHOME
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • Kubernetes学习记录
  • 国内环境ubuntu18安装k8s
    • 环境准备
      • 设置主机名
    • 关闭swap
      • 关闭 SeLinux
      • Master 额外执行下面命令
    • 安装docker
    • 安装 kubeadm, kubelet, kubectl
    • 准备镜像
    • 初始化Master
      • 部署网络插件
    • 部署Worker节点
    • 参考资料
  • 部署nginx服务
  • Kubernetes部署ELK日志收集
  • 启动Pod遇到CrashLoopBackOff解决方案
  • Filebeat使用Node方式收集k8s集群日志
  • 主动清理日志
  • k8s修改Master的Ip
  • 手动重启Pod
  • 分配pod到指定的节点
  • jenkins-pipeline自动构建并部署至k8s
  • 搭建K8S高可用集群
  • 搭建redis

国内环境 ubuntu18 安装 k8s

# 国内环境 ubuntu18 安装 k8s

# 环境准备

准备了三台ubuntu18 虚拟机

IP ROTE Hostname
192.168.12.98 master master
192.168.12.122 worker worker1
192.168.12.94 worker worker2

# 设置主机名

# 设置主机名
sudo hostnamectl set-hostname master

# host 添加一行 
sudo vim /etc/hosts
127.0.0.1 master
1
2
3
4
5
6

其他节点照着改名字即可

# 关闭swap

see linux 关闭交换空间

# 关闭 SeLinux

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
1
2

# Master 额外执行下面命令

创建/etc/sysctl.d/k8s.conf文件,添加如下内容

sudo vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
1
2
3
4

执行命令使修改生效

sudo modprobe br_netfilter
sudo sysctl -p /etc/sysctl.d/k8s.conf
1
2

# 安装docker

sudo apt  install docker.io -y
systemctl enable docker.service
1
2

# 安装 kubeadm, kubelet, kubectl

sudo apt-get update && sudo apt-get install -y apt-transport-https

sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

sudo apt-get update
sudo apt-get install -y kubelet=1.19.1-00 kubeadm=1.19.1-00 kubectl
1
2
3
4
5
6
7
8
9
10

# 准备镜像

这一步 可以说是最容易失败的步骤了, 简述一下原因:

  1. kubeadm init 时要拉取 镜像仓库k8s.gcr.io下的镜像
  2. 国内无法访问k8s.gcr.io
  3. 为了kubeadm init能够正常执行, 我们要提前先准备好要pull的k8s.gcr.io下的镜像

这里我已经准备好了k8s 1.19.1所需的镜像,只需拉下来打tag即可

# 查看需要的镜像
kubeadm config images list

# 拉取镜像
docker pull jdkhome/kube-apiserver:v1.19.1
docker pull jdkhome/kube-controller-manager:v1.19.1
docker pull jdkhome/kube-scheduler:v1.19.1
docker pull jdkhome/kube-proxy:v1.19.1
docker pull jdkhome/pause:3.2
docker pull jdkhome/etcd:3.4.13-0
docker pull jdkhome/coredns:1.7.0

# 修改镜像名称
docker tag jdkhome/kube-apiserver:v1.19.1 k8s.gcr.io/kube-apiserver:v1.19.1
docker tag jdkhome/kube-controller-manager:v1.19.1 k8s.gcr.io/kube-controller-manager:v1.19.1
docker tag jdkhome/kube-scheduler:v1.19.1 k8s.gcr.io/kube-scheduler:v1.19.1
docker tag jdkhome/kube-proxy:v1.19.1 k8s.gcr.io/kube-proxy:v1.19.1
docker tag jdkhome/pause:3.2 k8s.gcr.io/pause:3.2
docker tag jdkhome/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker tag jdkhome/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 初始化Master

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
1

执行完成后就完成了Kubernetes Master的部署了, 最后还打印出加入Worker加入Master的命令, 需要找个地方记下来。

sudo kubeadm join 192.168.12.98:6443 --token tearz2.rvquwsv5gd7ds8tn \
    --discovery-token-ca-cert-hash sha256:dd0674653ecc31f204a8f81d0eb91a14664a005fb05a61f56532fd977f14c7a4 
1
2

如果不小心忘记了,可以执行

kubeadm token create --print-join-command --ttl 0
1

另外, kubeadm 还会提示我们第一次使用 Kubernetes 集群所需要的配置命令:

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

而需要这些配置命令的原因是: Kubernetes 集群默认需要加密方式访问。所以,这几条命令,就是将刚刚部署生成的 Kubernetes 集群的安全配置文件,保存到当前用户的.kube 目录下, kubectl 默认会使用这个目录下的授权信息访问 Kubernetes 集群。

# 部署网络插件

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
1

查看pod状态

kubectl get pods -n kube-system
1

# 部署Worker节点

准备镜像完成后, 执行前面打印的 kubeadm join 命令即可

在master 执行

kubectl get nodes
1

可以看到节点情况,舒服~。

# 参考资料

  • 使用 kubeadm 安装 kubernetes v1.16.0 eastonliu
  • 国内环境安装k8s chenzhenqi

Enjoy~

上次更新: 2020/12/24, 21:12:00

← Kubernetes学习记录 部署nginx服务 →

最近更新
01
搭建redis
11-21
02
istio安装
10-25
03
搭建K8S高可用集群
09-13
更多文章>
鄂ICP备15015406号 | Copyright © 2015-2020 jdkhome
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式