【K8S】之 下载Kubeadm、node组件和命令行工具

文章目录

  • 一、安装kubeadm、kubelet和kubectl

  • (1)添加kubernets apt源公钥文件 * (2)加入kubernetes的官方源 * (3)安装工具

    1 * 二、核心组件镜像下载 2
    1. 先查看kubeadm版本 * 2. 再根据查看其所需镜像 * 3. 拉取

      1`
      K8S
      1`
      的包并打 tag(标签) * 4. 初始化

      • 三、验证master节点的引导结果
      • 四、配置 kubectl
      • 五、安装集群网络(安装 Pod 网络)
      • 六、验证
      • 七、参考资料

一、安装kubeadm、kubelet和kubectl


(1)添加kubernets apt源公钥文件

有两种方法:

直接执行下面命令(需要科学上网)
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add-

(无需科学上网)
先:
wget https://raw.githubusercontent.com/EagleChen/kubernetes_init/master/kube_apt_key.gpg

再:
cat kube_apt_key.gpg | apt-key add -
在这里插入图片描述

(2)加入kubernetes的官方源

在该文件中,加入kubernetes的官方源

有两种方法:

  1. 直接操作

vi /etc/apt/sources.list.d/kubernetes.list

1deb http://apt.kubernetes.io/ kubernetes-xenial main 2 3

在这里插入图片描述

可不可以,看包更新是否成功

更新本地包 apt-get update

  1. 使用镜像

echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list

更新本地包 apt-get update

  1. 使用 aliyun 源

1apt-get update && apt-get install -y apt-transport-https 2curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 3cat <<EOF >/etc/apt/sources.list.d/kubernetes.list 4deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main 5EOF 6 7

(3)安装工具

apt-get install -y --allow-unauthenticated kubelet kubeadm kubectl

--allow-unauthenticated 可以试试不加。

查看kuberadm 的当前版本
kubeadm version

查看kubectl 的当前版本
kubectl version

查看kubelet当前状态
systemctl status kubelet
在这里插入图片描述

二、核心组件镜像下载


下载方式:

  1. kubeadm 默认从k8s.gcr.io(老版本:gcr.io/google_containers)上下载核心组件镜像
  2. K8s 1.8之前可以通过KUBE_REPO_PREFIX 指定其他k8s镜像仓库前缀
  3. 手工将镜像下载到本地主机

采用第三种(手工下载镜像)

1. 先查看kubeadm版本

kubeadm version

2. 再根据查看其所需镜像

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

在这里插入图片描述

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

拉取镜像

1docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.12.3 2docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.12.3 3docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.12.3 4docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.12.3 5 6docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24 7docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 8docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2 9 10

打标签

1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.12.3 k8s.gcr.io/kube-scheduler:v1.12.3 2 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.12.3 k8s.gcr.io/kube-controller-manager:v1.12.3 3 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.12.3 k8s.gcr.io/kube-apiserver:v1.12.3 4 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3 5 6docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1 7docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2 8docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24 9 10

可以删除多余标签
docker rmi $(docker images | grep "^registry.cn-hangzhou.aliyuncs.com")

4. 初始化

kubeadm init --apiserver-advertise-address 10.0.2.15 --pod-network-cidr=192.168.16.0/20

--apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。

--pod-network-cidr= 指定 Pod 网络的范围。 Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求

关闭Swap
vi /etc/fstab
把最后的swap分区注释掉
在这里插入图片描述

然后重启此节点 reboot now

在这里插入图片描述
在这里插入图片描述

1 kubeadm join 10.0.2.15:6443 --token r6yz3v.c35eyym0a7dpgz86 --discovery-token-ca-cert-hash sha256:93d721518f5a4d42a6df0bd5cbcfdbe9ed2f7935cf0efaaace241d10d5cf61f6 2 3

三、验证master节点的引导结果


  1. 设置环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf

查看master 运行情况
kubectl get pods -n kube-system -o wide
在这里插入图片描述

四、配置 kubectl


推荐用 Linux 普通用户执行 kubectl (root 会有一些问题)

为 donald 用户配置 kubectl:(donald 是 我这边的用户)

1su - donald 2mkdir -p $HOME/.kube 3sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 4sudo chown $(id -u):$(id -g) $HOME/.kube/config 5 6# 启动 kubectl 自动补全功能 7echo "source < (kubectl completion bash)" >> ~/.bashrc 8 9

五、安装集群网络(安装 Pod 网络)


这里选择安装 Weave Net

直接安装(可能会出错)
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
在这里插入图片描述

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

vi weave.yaml

添加环境变量

1- name : IPALLOC_RANGE 2 value: 192.168.16.0/20 3 4

在这里插入图片描述
kubectl apply -f weave.yaml

六、验证


查看master 运行情况
kubectl get pods -n kube-system -o wide

在这里插入图片描述

有个疑问?
为嘛我这没有 kube-dns呢?

Kubernetes 1.11已经使用coredns替换了kube-dns

七、参考资料


  1. 每天5分钟玩转kubernetes
  2. http://morecoder.com/article/1133743.html
  3. https://ieevee.com/tech/2018/09/01/kubeadm.html\#增加kubernetes-aliyun镜像源
  4. https://kubethink.com/posts/create-an-on-premises-cluster-in-china-v1-12/

代码交流 2021