当前所在位置: 首页 > 资讯 >

今日热门!CentOS安装k8s

2023-07-01 16:27:34来源:博客园
1.系统配置硬件配置基本要求
资源大小
硬盘>= 20G
cpu>= 2核
内存>= 2G
本教程配置
主机名IP配置
master192.168.10.1553核+2G+20G
worker1192.168.10.2343核+2G+20G
worker2192.168.10.1473核+2G+20G
2.安装必要软件

所有机器都要执行

yum 更新

sudo yum update -y
bash-completion: tab命令补全wget:下载工具vim-enhanced:vim编辑器net-tools:网络工具gcc: 编译器
sudo yum install -y bash-completion wget vim-enhanced net-tools gcc
3.设置主机名查看主机名
hostname
设置主机名

以下三条命令分别在三个节点执行


(资料图)

#master节点hostnamectl set-hostname k8s-master#worker1节点hostnamectl set-hostname k8s-worker1#woker2节点hostnamectl set-hostname k8s-worker2
4.配置hosts文件

将节点加入到 hosts 文件中

编辑/etc/hosts文件

vi /etc/hosts

添加以下内容

192.168.10.155 k8s-master192.168.10.234 k8s-worker1192.168.10.147 k8s-worker2
5.设置时间同步
sudo yum -y install ntpdatesudo ntpdate ntp1.aliyun.comsudo systemctl status ntpdatesudo systemctl start ntpdatesudo systemctl status ntpdatesudo systemctl enable ntpdate
6.关闭防火墙或者开通指定端口

这里使用关闭防火墙

sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service
7.关闭 swap 交换空间
#查看free -h#临时关闭swapsudo swapoff -a#久关闭swap分区sudo sed -i "s/.*swap.*/#&/" /etc/fstab
8.关闭selinux
#查看getenforcecat /etc/selinux/config#临时关闭sudo setenforce 0#永久关闭sudo sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/" /etc/selinux/config
9. 安装 docker, Containerd安装 docker, Containerd
# 删除 docker(如果有的话)sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 安装必备工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 加入 docker 源sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 dockersudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 安装 containerdsudo yum install -y containerd
配置
# 停止 containerdsudo systemctl stop containerd.service# 生成并修改配置文件sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.baksudo containerd config default > $HOME/config.tomlsudo cp $HOME/config.toml /etc/containerd/config.tomlsudo sed -i "s#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.tomlsudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml# 将 containerd 加入开机自启sudo systemctl enable --now containerd.service# 启动 dockersudo systemctl start docker.service# 将 docker 加入开机自启sudo systemctl enable docker.servicesudo systemctl enable docker.socketsudo systemctl list-unit-files | grep dockersudo systemctl daemon-reloadsudo systemctl restart dockersudo docker infosudo systemctl status docker.servicesudo systemctl status containerd.service
10.添加阿里云 k8s 镜像仓库

添加/etc/yum.repos.d/kubernetes.repo文件;文件内容如下

[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/# 是否开启本仓库enabled=1# 是否检查 gpg 签名文件gpgcheck=0# 是否检查 gpg 签名文件repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
11.设置 docker 镜像加速
sudo mkdir -p /etc/dockervi /etc/docker/daemon.json

/etc/docker/daemon.json文件添加如下内容

{  "registry-mirrors":  [        "https://dockerproxy.com",        "https://hub-mirror.c.163.com",        "https://mirror.baidubce.com",        "https://ccr.ccs.tencentyun.com"    ],  "exec-opts": ["native.cgroupdriver=systemd"]}
12. 将桥接的IPv4流量传递到iptables的链
cat >/etc/modules-load.d/k8s.conf </etc/sysctl.d/k8s.conf <
13.安装k8s
# 安装 1.27.1 版本sudo yum install -y kubelet-1.27.1-0 kubeadm-1.27.1-0 kubectl-1.27.1-0 --disableexcludes=kubernetes --nogpgchecksystemctl daemon-reloadsudo systemctl restart kubeletsudo systemctl enable kubelet

安装最新版本(生产环境不建议)

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes --nogpgcheck
14.k8s配置master 初始化(仅在master节点主机上执行)
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.42.150 --kubernetes-version=v1.27.1

--image-repository: 镜像加速地址,一般不动

--apiserver-advertise-address: master节点IP地址

--kubernetes-version: kubernetes版本,自己选择的什么版本就改成什么版本

初始化失败可以使用kubeadm reset重置;失败原因多半是因为网络问题,可以换个网络试试

初始化成功后执行(仅在master节点主机上执行)
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
将 node 加入集群(仅在node节点主句执行)

kubeadm init命令执行成功后,会打印以下内容 (不要直接复制,每个人不一样)

kubeadm join 192.168.10.155:6443 --token pn5997.vkugw8cmdpc407y2 \--discovery-token-ca-cert-hash sha256:b625d6be2a3ccb56f3277e835b343d33a0b2e93e56e238a48daf830d3b7219f2 

如果忘记或者过期可以使用以下命令重新生成

kubeadm token create --print-join-command
查看集群状态(master 节点执行)
kubectl get nodes

输出

NAME          STATUS     ROLES           AGE     VERSIONk8s-master    NotReady   control-plane   8m42s   v1.27.1k8s-worker1   NotReady             82s     v1.27.1k8s-worker2   NotReady             84s     v1.27.1

可以看到所有节点都是 NotReady ,是因为还没有配置网络

配置网络(仅在master节点执行)

k8s版本要与Calico版本对应上,具体查看

https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements

下载calico.yaml文件

wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml

修改calico.yaml文件

- name: CLUSTER_TYPE下方添加如下内容

- name: CLUSTER_TYPE  value: "k8s,bgp"  #下方为新增内容- name: IP_AUTODETECTION_METHOD  value: "interface=master节点主机的网卡名称"

配置网络

kubectl apply -f calico.yaml

再次查看节点信息

kubectl get nodes

依然还是没有成功;查看 pod 状态,没有正常启动

kubectl get pods --all-namespaces -o wide | grep kube-system

使用crictl logs命令查看任何一个pod,发现有如下错误

crictl logs coredns-7bdc4cb885-28jnf

kubectl logs -n kube-system命令查看状态不是running的pod,发现有如下错误

kubectl logs -n kube-system calico-node-bfxtkkubectl logs -n kube-system coredns-7bdc4cb885-28jnf

新建/etc/crictl.yaml文件,写入如下内容

runtime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false

使用kubectl delete pod -n kube-system命令删除那些状态不是running的pod。例如

kubectl delete pod -n kube-system calico-kube-controllers-6c99c8747f-kmkdl

再次查看pod的启动状态,全部都是在running状态

kubectl get pod -n kube-system

另外crictl ps也可以使用了。

crictl ps -a

使用crictl logs也可以查看日志了

crictl logs 4838afe83150e
15.其他k8s命令补全
! grep -q kubectl "$HOME/.bashrc" && echo "source /usr/share/bash-completion/bash_completion" >>"$HOME/.bashrc"! grep -q kubectl "$HOME/.bashrc" && echo "source <(kubectl completion bash)" >>"$HOME/.bashrc"! grep -q kubeadm "$HOME/.bashrc" && echo "source <(kubeadm completion bash)" >>"$HOME/.bashrc"! grep -q crictl "$HOME/.bashrc" && echo "source <(crictl completion bash)" >>"$HOME/.bashrc"source "$HOME/.bashrc"
常用命令
# 获取节点kubectl get nodes -o wide# 实时查询nodes状态watch kubectl get nodes -o wide# 获取podkubectl get pods --all-namespaces -o wide# 查看镜像列表kubeadm config images list# 节点加入集群kubeadm token create --print-join-command# 描述nodekubectl describe node k8s-master# 描述podkubectl describe pod kube-flannel-ds-hs8bq --namespace=kube-system
16.测试

以下命令在主节点执行

创建一个 nginx
kubectl create deployment nginx --image=nginx
查看状态
kubectl get pods -o wide

等待ContainerCreating变成Running后执行下一个步骤

暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
查看 pos 及服务信息
kubectl get pod,svc
在浏览器中访问
http://192.168.10.155:31930/

地址根据你自己的主机变化,端口上面输出的信息中 PORT(S) 这一栏会有

关键词:

上一篇:全球通讯!@高考生,7大榜单揭秘大学专业就业前景
下一篇:最后一页