kubernetes(二)1.23部署实践

Kubernetes1.23.6部署实践

OS-release: Centos7.9

K8s-version: kubernetes-1.23.6-0

Docker-version: 20.10.14

1. 准备环境(所有节点)

systemctl stop firewalld && systemctl disable firewalld &&setenforce 0 &&sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config && swapoff -a && SWAP=$(grep -n swap /etc/fstab |awk -F : '{print $1}') && sed -i -e "$SWAP s/^/#/" /etc/fstab     ###关闭防火墙,关闭selinux 关闭swap分区
master节点需要添加hosts文件

2. 允许 iptables 检查桥接流量(所有节点)

确保 br_netfilter 模块被加载。这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行 sudo modprobe br_netfilter

为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。例如:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sudo sysctl --system

3. 安装Docker( runtime)(所有节点)

参考阿里巴巴开源镜像站docker安装步骤,本文档省略此步骤

https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.a60b1b116EgNak

修正 :在Centos7中应使用systemctl 命令对服务进行管理

systemctl enable --now docker		#启动docker

可以通过查询Docker版本命令确认Docker安装情况,以验证本步骤完成.

image-20220425214928636

4. 配置 Docker 守护程序并且指定cgroupdriver(所有节点)

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

5. 配置Docker镜像加速器

可以通过阿里云容器镜像服务找到合适的镜像加速节点,按照格式添加入/etc/docker/daemon.json

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

image-20220425221424982

修订: 请勿使用文档中的配置方式,此方式会覆盖第四步骤 <配置 Docker 守护程序并且指定cgroupdriver>

请直接修改文件至如下状态


{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://y9d66ymm.mirror.aliyuncs.com"],	#添加镜像加速节点,请注意添加行尾的逗号!
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

重新加载配置文件,以及重新启动docker

sudo systemctl daemon-reload
sudo systemctl restart docker

6. 安装 kubeadm、kubelet 和 kubectl(所有节点)

你需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。

参考阿里巴巴开源镜像站Kubernetes安装步骤,本文档省略此步骤

https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.71871b11sfrByL

修正: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 请修改repo文件中的两处gpgcgeck参数之后再次更新yum缓存

gpgcheck=1
repo_gpgcheck=1
yum makecache fast		#更新缓存
yum install -y kubelet kubeadm kubectl	#安装软件包
sudo systemctl enable --now kubelet		#启动kubelet

7. 初始化kuberneters集群管理节点(在管理节点运行)

kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers        ##使用阿里云镜像仓库拉取镜像

管理节点安装完成后,得到以下结果,需要记录下来

Your Kubernetes control-plane 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				#

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf					#如果使用的是root用户,请运行这条命令

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.16.10.234:6443 --token hq56i3.lvbf8puauk4v9wta \		
        --discovery-token-ca-cert-hash sha256:eded939d89b7795e8c35ed1edbbe0cf8b6fc65114a93f19051a4655b1d57f23a	  #工作节点使用这条命令加入集群

8. 安装 Pod 网络附加组件(在管理节点运行)

安装网络组件,Flannel,或者Calico

https://kubernetes.io/zh/docs/concepts/cluster-administration/networking/

 kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml  #本次使用此yaml

通过 kubectl get pods --all-namespaces,命令查询所有pods都是Running状态,则表示安装完成

image-20220425232846415

9 添加工作节点

  • 运行 kubeadm init 输出的命令。例如:
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

如果没有令牌,可以通过在控制平面节点上运行以下命令来获取令牌:

kubeadm token list

输出类似于以下内容:

TOKEN                    TTL  EXPIRES              USAGES           DESCRIPTION            EXTRA GROUPS
8ewj1p.9r9hcjoqgajrj4gi  23h  2018-06-12T02:51:28Z authentication,  The default bootstrap  system:
                                                   signing          token generated by     bootstrappers:
                                                                    'kubeadm init'.        kubeadm:
                                                                                           default-node-token

默认情况下,令牌会在24小时后过期。如果要在当前令牌过期后将节点加入集群, 则可以通过在控制平面节点上运行以下命令来创建新令牌:

kubeadm token create

输出类似于以下内容:

5didvk.d09sbcov8ph2amjw

如果你没有 --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/^.* //'

输出类似于以下内容:

8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78

Note: 要为 <control-plane-host>:<control-plane-port> 指定 IPv6 元组,必须将 IPv6 地址括在方括号中,例如:[fd00::101]:2073

输出应类似于:

[preflight] Running pre-flight checks

... (log output of join workflow) ...

Node join complete:
* Certificate signing request sent to control-plane and response
  received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on control-plane to see this machine join.

几秒钟后,当你在控制平面节点上执行 kubectl get nodes,你会注意到该节点出现在输出中。

Note: 由于集群节点通常是按顺序初始化的,CoreDNS Pods 很可能都运行在第一个控制面节点上。 为了提供更高的可用性,请在加入至少一个新节点后 使用 kubectl -n kube-system rollout restart deployment coredns 命令,重新平衡 CoreDNS Pods。

至此,集群部署完成.

10.安装kubernetes命令补全

yum -y install bash-completion
source /usr/share/bash-completion/bash_completion

source <(kubectl completion bash)

echo "source <(kubectl completion bash)" >> ~/.bashrc

11.去除污点

kubectl taint nodes --all node-role.kubernetes.io/master-	##shi'yon
kubeadm join 172.16.20.49:8443 --token h2r69d.34ozk3wyimh7w7w8 --discovery-token-ca-cert-hash sha256:8e2f34c79ce793c1d782f010e1bc2f8756eda21d69c671c08ba36855016bcb13 --control-plane --certificate-key 5b87d17c8823f622c30b8f5ffab3f44eed6d4e0ca5dd1f07c65d2c3c2b309e57
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值