自学内容网 自学内容网

单机版k8s搭建

 环境配置:

关闭防火墙和交换内存

systemctl stop ufw
sudo swapoff -a

安装Docker 

更新安装包

sudo apt-get update

安装依赖

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

获取证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加仓库

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

再次更新安装包

sudo apt update

安装docker

sudo apt-get -y install docker-ce

启动docker

sudo systemctl start docker

重启docker

sudo systemctl restart docker

开机自启docker

sudo systemctl enable docker

kubelet、kubectl、kubeadm组件安装

更新安装包

sudo apt-get update

签名秘钥

curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

添加k8s的apt仓库

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"

再次更新apt包

sudo apt-get update

查看版本是否存在

sudo apt-cache madison kubelet kubectl kubeadm | grep '1.22.9-00' 

指定版本安装

sudo apt install -y kubelet=1.22.9-00 kubectl=1.22.9-00 kubeadm=1.22.9-00

标记指定软件包为保留,阻止更新

sudo apt-mark hold kubelet kubeadm kubectl

修改cgroups 

在/etc/docker/daemon.json文件中添加exec-opts参数

{
"exec-opts":[
"native.cgroupdriver=systemd"
]
}

重启docker

systemctl restart docker

重启kubelet

systemctl restart kubelet

初始化 

初始化命令

sudo kubeadm init \
  --kubernetes-version=v1.22.9 \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=10.24.0.0/16 \
  --ignore-preflight-errors=Swap

--image-repository string 指定从什么位置来拉取镜像(1.13版本才有的)
默认值是k8s.gcr.io,改为国内镜像地址:registry.aliyuncs.com/google_containers
–kubernetes-version string: 指定kubenets版本号
–pod-network-cidr 指定 Pod 网络的范围。
Kubernetes 支持多种网络方案,而且不同网络方案对 –pod-network-cidr有自己的要求,这里设置为10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。(说明在集群中将会使用10.244.0.0这个网段下面的所有ip地址,比如将tomcat部署在10.244.144.198这个地址,然后再master节点使用curl 10.244.144.198就可以返回tomcat的界面)
--ignore-preflight-errors=all 忽略预检报错内容,指定所有(自己猜的)
注:kubeadm 不支持将没有 --control-plane-endpoint 参数的单个控制平面集群转换为高可用性集群。

创建.kube文件夹

sudo mkdir -p $HOME/.kube

将admin.conf文件内容复制到.kube的config文件中

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

将文件的所有权限从文件所有者修改到到所有者所在的组的其他用户(user->group)

sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果使用kubectl报错,/etc/kubernetes/admin.conf访问拒绝,使用sudo chown $(id -u):$(id -g) /etc/kubernetes/admin.conf

calico网络配置 

获取calico.yaml文件资源

curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml -O

应用到kubectl中

sudo kubectl apply -f calico.yaml

如果出现localhost:8080访问出错,把sudo去掉

查看节点和组件 

查看集群中节点信息

kubectl get nodes

查看组件状态

kubectl get cs

如果组件为unhealthy,原因是默认端口是0了,需要注释掉/etc/kubernetes/manifests下的kube-controller-manager.yamlkube-scheduler.yaml的--port=0或直接删除--port=0

注释完重启sudo systemctl restart kubelet.service

创建pod 

将主节点设为可调度

kubectl taint nodes --all node-role.kubernetes.io/master-

当创建单机版的 k8s 时,master 节点默认不允许调度 pod 。

拉取镜像

kubectl run nginx --image=nginx --port=80

查看pod状态

kubectl get pod

删除pod 

kubectl delete pods nginx --grace-period=0 --force

强制删除

kubectl delete pods nginx

普通删除

woker节点加入master节点的命令 

kubeadm token create --print-join-command

在master节点上运行,得到相应命令


原文地址:https://blog.csdn.net/weixin_61067952/article/details/140265598

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!