Kubernetes安装


参考文档https://zhuanlan.zhihu.com/p/146028810

安装kubeadm, kubelet 和 kubectl

部署之前,我们需要安装一下三个包:

  • kubeadm: 引导启动k8s集群的命令行工具。
  • kubelet: 在群集中所有节点上运行的核心组件, 用来执行如启动pods和containers等操作。
  • kubectl: 操作集群的命令行工具。

首先添加apt-key:

sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
1.下载 Google Cloud 公开签名秘钥:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg   (可手动下载)
2.添加 Kubernetes apt 仓库:
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
3.更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt-get update
sudo apt-get install -y kubelet=1.23.12-00 kubeadm=1.23.12-00 kubectl=1.23.12-00
sudo apt-mark hold kubelet kubeadm kubectl

安装老版本的 Kubernetes

apt-cache madison kubectl | grep ${version}

关闭Swap

$ sudo swapoff -a

# use "free -m" to see if we successfully unable the swap
$ free -m
4.创建Master节点
kubeadm init --config kubeadm-config.yaml
# kubeadm-config.yaml
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.23.12
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: 172.16.0.0/16
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: cgroupfs
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: "192.168.0.192"

根据上面的步骤:

1) 在主机节点(A)当前用户home下创建.kube, 拷贝admin配置文件,赋予权限

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

2) 在主节点(A)安装网络插件,这是必要的,因为pod之间需要通信, 这里使用的是flannel

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 其他 Networking 和 network policy 可以参考以下链接
https://kubernetes.io/docs/concepts/cluster-administration/addons/
5.添加Worker节点

要为群集添加工作节点,需要为每台计算机执行以下操作:

  • SSH到机器
  • 成为root用户,(如: sudo su -)
  • 运行上面的kubeadm init命令输出的:kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

如果我们忘记了Master节点的加入token,可以使用如下命令来查看:

kubeadm token list

# 输出:
# TOKEN                     TTL       EXPIRES                USAGES                   DESCRIPTION   EXTRA GROUPS
# abcdef.0123456789abcdef   22h       2018-11-10T14:24:51Z   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token

记录 kubeadm init 输出的 kubeadm join 命令。 你需要此命令将节点加入集群

kubeadm join 192.168.0.192:6443 --token yca760.ascp39dkvddytq3h \
        --discovery-token-ca-cert-hash sha256:ecfd86831e088af80789823035d4999fc45c050610a4b787ba84e50750493ed9

也可以使用下面的名为 kubeadm-config.yaml 的 kubeadm 配置文件 示例用于向集群中添加另一个控制面节点。

https://github.com/rucjohn/books-official-doc-kubenetes/blob/4a9b421a1a8727548b2f3ebdca0de77024837f0e/setup/production-environment/tools/kubeadm/dual-stack-support.md

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
controlPlane:
  localAPIEndpoint:
    advertiseAddress: "192.168.0.193"
    bindPort: 6443
discovery:
  bootstrapToken:
    apiServerEndpoint: 192.168.0.192:6443
    token: "yca760.ascp39dkvddytq3h"
    caCertHashes:
    - "sha256:ecfd86831e088af80789823035d4999fc45c050610a4b787ba84e50750493ed9"
    # 请更改上面的认证信息,使之与你的集群中实际使用的令牌和 CA 证书匹配
nodeRegistration:
  kubeletExtraArgs:
    node-ip: 10.100.0.4,fd00:1:2:3::4

默认情况下,token的有效期是24小时,如果我们的token已经过期的话,可以使用以下命令重新生成:

kubeadm token create

# 输出:
# 9w6mbu.3k2z7pprl3eaozk9

如果我们也没有--discovery-token-ca-cert-hash的值,可以使用以下命令生成:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

# 输出:
# 9fcb02a0f4ab216866f87986106437b7305474850f0de81b9ac9c36a468f7c67
6.卸载 k8s
#卸载集群
kubeadm reset
rm -rf $HOME/.kube
---------------
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni 
sudo apt-get autoremove  
sudo rm -rf ~/.kube

文章作者: Kevin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kevin !
评论
  目录