Kubernetes v1.24 基于containerd部署 - PunchLinux
source link: https://www.cnblogs.com/punchlinux/p/16498592.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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
以上就是关于Kubernetes v1.24版本的安装。如果对你有帮助或有建议疑问可以评论区留言!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK