Kubernetes --kubeadm简单部署k8s集群

部署k8s集群

官网:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

实验集群环境

node1 : IP=192.168.137.3 ;MEM-->2G ;CPU-->2核 ;关闭交换分区 master
node2 : IP=192.168.137.4 ;MEM-->2G ;CPU-->2核 ;关闭交换分区 node
node3 : IP=192.168.137.5 ;MEM-->2G ;CPU-->2核 ;关闭交换分区 node

所有节点的操作

第一步:主机名解析

╭─root@node* ~  
╰─➤  vim /etc/hosts  
...
192.168.137.3 node1
192.168.137.4 node2
192.168.137.5 node3

第二步:禁用交换分区

╭─root@node* ~  
╰─➤  swapoff -a
╭─root@node* ~  
╰─➤  vim /etc/fstab
...
#/dev/mapper/cl-swap     swap                    swap    defaults        0 0
...
╭─root@node* ~  
╰─➤  free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        821M        204M         50M        797M        738M
Swap:            0B          0B          0B

第三步:安装docker

╭─root@node* ~  
╰─➤  cat docker-sbeed.sh 
#!/bin/bash
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
mv docker-ce.repo /etc/yum.repos.d
yum install docker-ce -y
#下载最新版,可以指定docker-ce版本


# aliyun 镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://*****.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

╭─root@node* ~  
╰─➤  bash docker-sbeed.sh 

第四步:要保证打开内置的桥功能,这个是借助于iptables来实现的

╭─root@node2 ~  
╰─➤  echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables 

# 需要安装docker才会成/proc/sys/net/bridge/bridge-nf-call-iptables

第五步:准备k8s安装源

╭─root@node* ~  
╰─➤  vim /etc/yum.repos.d/k8s.repo  

[k8s]
name=k8s
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
                                                                         

第六步:下载程序包

╭─root@node* ~  
╰─➤  yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

# 下载指定版本,与初始化的kubernetes版本一致
# kubelet 实现pod创建
# kubeadm 集群初始化
# kubectl 命令行工作

第七步:kubelet开机自启

╭─root@node* ~  
╰─➤  systemctl enable kubelet

master节点运行命令

第一步:初始化master

╭─root@node1 ~  
╰─➤  kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.2 --apiserver-advertise-address 192.168.137.3 --pod-network-cidr=10.244.0.0/16


# # –image-repository string:这个用于指定从什么位置来拉取镜像(1.13版本才有的),默认值是k8s.gcr.io,我们将其指定为国内镜像地址:registry.aliyuncs.com/google_containers

# # –kubernetes-version string:指定kubenets版本号,默认值是stable-1,会导致从https://dl.k8s.io/release/stable-1.txt下载最新的版本号,我们可以将其指定为固定版本(v1.15.1)来跳过网络请求。

# # –apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。

# # –pod-network-cidr指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对  –pod-network-cidr有自己的要求,这里设置为10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。

如果初始化失败,请使用如下代码清除后重新初始化

 kubeadm reset
 ifconfig cni0 down
 ip link delete cni0
 ifconfig flannel.1 down
 ip link delete flannel.1
 rm -rf /var/lib/cni/
 rm -rf /var/lib/etcd/*

第二步:配置kubectl

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


# kubectl 是管理 Kubernetes Cluster 的命令行工具,前面我们已经在所有的节点安装了 kubectl。Master 初始化完成后需要做一些配置工作,然后 kubectl 就能使用了

为了使用更便捷,启用 kubectl 命令的自动补全功能

╭─root@node1 ~  
╰─➤  echo "source <(kubectl completion bash)" >> ~/.bashrc

第三步:安装pod网络

#flannel网路

╭─root@node1 ~  
╰─➤  kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


或
#calico网络
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/calico.yaml -O
kubectl apply -f calico.yaml


# 要让 Kubernetes Cluster 能够工作,必须安装 Pod 网络,否则 Pod 之间无法通信。
# Kubernetes 支持多种网络方案,选一种部署

为k8s添加节点

node 节点操作

╭─root@node2 ~  
╰─➤  kubeadm join 192.168.137.3:6443 --token 1lxhha.rvtg5i1n53vm9hs1 \
    --discovery-token-ca-cert-hash sha256:0b5ce146f98a5efcfddda3637374de1e62d69e10f1b9e37e792e0ac555422039

#  通过kubeadm初始化后,都会提供node加入的token (在初始化的最后一行输出)
#  node 节点加入运行此命令即可
#  rm -rf /etc/kubernetes/*     重新添加节点需删除上次添加节点时生成的文件

token过期了怎么办

  1. 通过kubeadm初始化后,都会提供node加入的token
  2. 默认token的有效期为24小时,当过期之后,该token就不可用了

第一步:在master节点上重新生成token

╭─root@node1 ~  
╰─➤  kubeadm token create 
zlbwtm.1mtft6bb9k7a2108

第二步:在master节点上获取证书sha256 编码hash值

╭─root@node1 ~  
╰─➤  openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

0b5ce146f98a5efcfddda3637374de1e62d69e10f1b9e37e792e0ac555422039

第三步:在node节点上节点加入集群

╭─root@node3 ~  
╰─➤  kubeadm join 192.168.137.3:6443 --token zlbwtm.1mtft6bb9k7a2108
 --discovery-token-ca-cert-hash sha256:0b5ce146f98a5efcfddda3637374d
e1e62d69e10f1b9e37e792e0ac555422039
posted @ 2019-08-20 16:53  du-z  阅读(1211)  评论(0编辑  收藏  举报