kubernetes(二)1.23部署实践
k8s1.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安装情况,以验证本步骤完成
.
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
修订: 请勿使用文档中的配置方式,此方式会覆盖第四步骤 <配置 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状态,则表示安装完成
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)