03-使用Kubeadm搭建Kubernetes集群

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangjun0210/article/details/86674569

1. 环境说明

  • OS: Ubuntu 18.04
  • Kubernetes: 1.13.2
  • 节点信息
Hostname IP 备注
K8S-Master 172.28.65.239 Master节点
K8S-Node1 172.28.65.242 Node节点1
K8S-Node2 172.28.65.244 Node节点2
  • 开始之前,请确保可以科学上网,推荐使用 shadowsocket,并开启 http proxy

2. Master节点安装kubeadm、kubelet和kubectl

2.1 添加kubernets apt源公钥文件

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

2.2 加入kubernetes的官方源

# 新建文件kubernetes.list
vi /etc/apt/sources.list.d/kubernetes.list

#将以下内容加入kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main

#更新本地包缓存
apt-get update

2.3 安装工具

apt-get install -y kubelet kubeadm kubectl

安装完成后:

#查看kuberadm 的当前版本
kubeadm version

#查看kubectl 的当前版本
kubectl version

#查看kubelet当前状态
systemctl status kubelet

在这里插入图片描述

3. 核心组件镜像下载

下载方式:

这里采用手工下载镜像方式。

3.1 查看其所需镜像

先查看kubeadm版本

kubeadm version

在这里插入图片描述

v1.13.2版本,根据查看其所需镜像:

kubeadm config images list --kubernetes-version v1.13.2

在这里插入图片描述

3.2 拉取K8S 的包并打 tag(标签)

拉取镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.13.2

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1	
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6

给镜像打标签

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.13.2 k8s.gcr.io/kube-apiserver:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

3.3 初始化

  • 关闭Swap
vi /etc/fstab

把最后的swap分区注释掉,然后reboot,让其生效
在这里插入图片描述

  • 初始化
sudo kubeadm init --kubernetes-version v1.13.2  --apiserver-advertise-address 172.28.65.239 --pod-network-cidr=192.168.0.0/16
root@K8S-Master:~# sudo kubeadm init --kubernetes-version v1.13.2 --pod-network-cidr=192.168.0.0/16
[init] Using Kubernetes version: v1.13.2
[preflight] Running pre-flight checks
......
......

Your Kubernetes master 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

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/

You can now join any number of machines by running the following on each node
as root:

kubeadm join 172.28.65.239:6443 --token 40dup1.urffu06eu0u1hzy3 --discovery-token-ca-cert-hash sha256:9536338df40c12f9287a15d4764fb02041b5e5cd2b0700fddeea32cfbab4cd83

按照提示执行如下操作:

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

3.4 验证master节点的引导结果

  • 设置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
  • 查看master 运行情况
kubectl get pods -n kube-system -o wide

在这里插入图片描述
在这里插入图片描述
这种情况考虑是开了系统代理导致,由于可能是全局代理,导致 IP 访问API Server 也是不通的,通常建议此时关闭系统代理,仅仅开启 Docker 代理就足够应付接下来的安装。

while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '{print $1}')

再执行

kubectl get pods -n kube-system -o wide

在这里插入图片描述
如果在执行kubeadm init出现错误,要重新执行kubeadm init,需要首先执行kubeadm reset

3.5 安装集群网络插件

这里选择安装 Weave Net。
下载weave.yaml到本地:

curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave.yaml

vi weave.yaml

在容器weave下添加环境变量

- name : IPALLOC_RANGE
  value: 192.168.16.0/20

在这里插入图片描述
执行:

kubectl apply -f weave.yaml

在这里插入图片描述
验证网络插件的结果:

kubectl get pods -n kube-system -o wide

在这里插入图片描述

4. 向集群加入node节点

两台node节点先安装好:

  • 安装docker-ce
  • kubeadm、kubelet和kubectl,参照第2节
  • 下载所需镜像,参照3.1-3.2小节
    node节点加入集群,分别在两个节点上执行:
kubeadm join 172.28.65.239:6443 --token 40dup1.urffu06eu0u1hzy3 --discovery-token-ca-cert-hash sha256:9536338df40c12f9287a15d4764fb02041b5e5cd2b0700fddeea32cfbab4cd83

这段执行语句在3.3小节初始化master节点成功后会打印出来。
可在master节点上查看集群情况:

kubectl get nodes

在这里插入图片描述
集群删除节点k8s-node1,在master上执行:

kubectl delete node k8s-node1

在k8s-node1节点上执行:

kubeadm reset

在这里插入图片描述

5. 配置命令行交互环境

配置在k8s-node1节点上管理集群:

  • 分发 /etc/kubernetes/ admin.conf:将master节点下的该文件复制到k8s-node1节点的对应目录;
  • 设置环境变量KUBECONFIG:
# vi ~/.bashrc 添加如下代码
export KUBECONFIG='/etc/kubernetes/admin.conf'

# 使shell配置文件生效
source ~/.bashrc
  • 检查配置结果:在k8s-node1上执行
kubectl get nodes

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huangjun0210/article/details/86674569