网站首页 > 教程文章 正文
?k8s每个节点安装containerd。
??containerd安装参考《containerd安装博文》:https://www.cnblogs.com/punchlinux/p/16496094.html
containerd配置
??修改containerd的config.toml配置文件,修改k8s的镜像初始化pause底层网络镜像的下载地址
root@master:~# vim /etc/containerd/config.tomlsandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"
??再一次重启每个节点的containerd
systemctl restart containerd
??每个节点保持时间同步一致,安装chrony。检查时间一致性
chronyc sourcs -Vdate
安装kubeadm环境
??配置软件仓库
apt-get update && apt-get install -y apt-transport-httpscurl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -cat <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial mainEOF
??更新软件仓库,并检查源更新
apt-get update
??最新的版本则是1.24.3
??所有k8s节点都安装kubeadm、kubeadm和kubectl
root@master:~# apt install kubeadm=1.24.3-00 kubectl=1.24.3-00 kubelet=1.24.3-00
??查看k8s初始化所需的镜像
root@master:~# kubeadm config images list --kubernetes-version v1.24.3
??编写一个shell脚本,修改官方镜像地址为阿里云镜像地址
??-n k8s.io则指定k8s 的namespace下载镜像
root@master:~# vim imagedown.shnerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.24.3nerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.24.3nerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.24.3nerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.24.3nerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7nerdctl -n k8s.io pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.3-0
??所有k8s节点执行脚本,下载镜像
初始化k8s集群
??每台k8s节点设置加载模块,内核参数调优
root@master:~# vim /etc/modules-load.d/modules.confip_vsbr_netfilter root@master:~# modprobe ip_vsroot@master:~# modprobe br_netfilter
??内核优化
root@master:~# cat /etc/sysctl.confnet.ipv4.ip_forward=1vm.max_map_count=262144kernel.pid_max=4194303fs.file-max=1000000net.ipv4.tcp_max_tw_buckets=6000net.netfilter.nf_conntrack_max=2097152 net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1vm.swappiness=0 root@master:~# sysctl -p
??master执行初始化集群
root@master:~# kubeadm init --apiserver-advertise-address=192.168.100.10 \--apiserver-bind-port=6443 \--kubernetes-version=v1.24.3 \--pod-network-cidr=10.100.0.0/16 \--service-cidr=10.200.0.0/16 \--service-dns-domain=cluster.local \--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \--ignore-preflight-errors=swap
??选项解释:
--apiserver-advertise-address api-server地址也就是master节点地址
--apiserver-bind-port api-server服务端口号
--kubernetes-version k8s版本号
--pod-network-cidr pod网络的地址建议16位或者8位地址
--service-cidr svc网络地址建议16位或者8位地址与pod网络区别开来
--service-dns-domain=cluster.local 集群dns域名地址,默认为cluster.local
--image-repository k8s镜像下载地址
--ignore-preflight-errors=swap 忽略初始化错位,如果开启了swap,可以忽略这个错误
??初始化完成
??kubectl凭据配置
??kubectl默认使用~/.kube/config文件中凭据信息管理kubernetes。
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config root@master:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster Ready control-plane 19m v1.24.3
??如果环境变量KUBECONFIG存在,则优先使用境变量KUBECONFIG设置的值。
root@master:~# mv .kube/config .export KUBECONFIG=/root/configroot@master:~# kubectl get nodes NAME STATUS ROLES AGE VERSIONmaster NotReady control-plane,master 102s v1.24.3
??等网络配置完成后,STATUS状态由NotReady变更为Ready
??还可以通过选项--kubeconfig=''明确指定凭据文件位置。?
root@master:~# kubectl get nodes --kubeconfig /root/config
??kubernetes对凭据文件名没有要求
root@master:~# mv config kube.confroot@master:~# kubectl get nodes --kubeconfig kube.conf
配置网络
??这里采用calico网络。
??官方地址:http://projectcalico.org 或者 https://www.tigera.io/project-calico/
??产品文档:https://projectcalico.docs.tigera.io/about/about-calico
??calico项目下载地址:
??https://projectcalico.docs.tigera.io/getting-started/kubernetes/installation/config-options
??下载calico网络插件yaml并修改pod网络地址,此地址为初始化集群指定的pod网络地址段
root@master:~# curl https://projectcalico.docs.tigera.io/manifests/calico-etcd.yaml -Oroot@master:~# vim calico-etcd.yaml
root@master:~# kubectl apply -f calico-etcd.yaml
???安装calico后,立即创建pod,由于工作节点还未加入到集群,所以calico网络还处于pending状态
节点加入集群
如果master节点初始化集群时终端输出的加入集群命令丢失,可以使用以下命令重新获取:
root@master:~# kubeadm token create --print-join-command
??node节点执行加入集群
??获取节点状态
??nerdctl 查看k8s的namespace下运行的容器
root@master:~# nerdctl -n k8s.io container ls -a
??等待一段时间后,查看pod运行状态为running则部署完成
root@master:~# kubectl get pods -A -o wid
??查看节点状态
??验证k8s正常提供服务:
??部署一个名为web的deployment并在宿主机可以访问:
root@master:~# kubectl create deployment web --image nginx:latest --replicas 2 --dry-run=client -o yaml > web.yaml
??修改一下镜像拉去规则imagePullPolicy: IfNotPresent
root@master:~# cat web.yaml apiVersion: apps/v1kind: Deploymentmetadata: creationTimestamp: null labels: app: web name: webspec: replicas: 2 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - image: nginx:latest name: nginx imagePullPolicy: IfNotPresent
??创建deployment
root@master:~# kubectl apply -f web.yaml
??查看pods
??创建service暴露容器端口
root@master:~# kubectl expose deployment web --target-port 80 --port 80 --type NodePort
??查看service
root@master:~# kubectl get service
??宿主机依次访问每个节点的32316
??访问master:
??访问node01
??访问node02
其他k8s运维小技巧
??kubectl命令补全
root@master:~# kubectl completion bash > /etc/bash_completion.d/kubectlroot@master:~# kubeadm completion bash > /etc/bash_completion.d/kubeadmroot@master:~# source /etc/bash_completion.d/kubectlroot@master:~# source /etc/bash_completion.d/kubeadm
kubectl edit 高亮显示
[root@master ~]# vim .bashrc[root@master ~]# export EDITOR=vim[root@master ~]# source /root/.bashrc
文章来自https://www.cnblogs.com/punchlinux/p/16498592.html
猜你喜欢
- 2024-12-15 [常用工具] cvat安装与使用指北 cvaat
- 2024-12-15 Harbor简介及将私有镜像仓库 Harbor 接入 Containerd 管理介绍
- 2024-12-15 如何制作CentOS 8 Linux安装U盘?UltraISO软件的使用方法介绍
- 2024-12-15 [ 小白玩树莓派系列] 如何在树莓派 4 上USB 外接SSD启动 Android 12L?
- 2024-12-15 Docker的安装与使用 docker的安装方法
- 2024-12-15 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?
- 2024-12-15 5分钟在虚拟机中搭建Linux开发环境
- 2024-12-15 目前还能用的Docker容器加速方案和可用镜像源
- 2024-12-15 容器化之Docker镜像仓库Harbor的安装
- 2024-12-15 kali下对Docker的详细安装 kali安装go
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)