Linux安装K8S单机服务
安装方式不限这里我们的操作系统可以使用yum命令直接进行docker安装安装结束后查看版本信息docker -v启动服务、设置开机自启动。
·
1.安装Docker
安装方式不限
这里我们的操作系统可以使用yum命令直接进行docker安装
yum install -y docker
安装结束后查看版本信息
docker -v
启动服务、设置开机自启动
systemctl start docker
systemctl enable docker
2.安装docker-compose(可选)
下载命令包到/usr/bin/docker-compose,注意:有的操作系统可能路径是/usr/local/bin/docker-compose,可以自行更改
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
#可以单独指定版本号
授权
sudo chmod +x /usr/bin/docker-compose
查看版本信息
docker-compose --version
3.系统配置修改
3.1禁用swap
一般默认都是禁用掉的,free -m检查下即可,显示为0则是已经禁用
free -m
如果没有禁用,进行以下操作:
swapoff -a
同时在/etc/fstab文件中注释掉包含swap的一行。
3.2关闭防火墙
这个也是一般也是默认关闭的,检查下防火墙服务即可。
#检查是否有防火墙开启
systemctl status firewalld
#如果开启,进行关闭
systemctl stop firewalld
systemctl disable firewalld
3.3禁用Selinux
setenforce 0
4.K8S基本环境信息
4.1主机名、IP&Role规划
我们这里搭建的是单机集群,所以IP地址、角色如下:
IP | hostname | role |
192.168.1.209 | k8s-master1 | etcd、Master |
4.2设置hostname
hostnamectl set-hostname k8s-master1
4.3修改/etc/hosts
cat >> /etc/hosts << EOF
192.168.1.209 k8s-master1
EOF
5.安装K8S
5.1修改Kubernetes源
注意:我这里是yum源。修改为阿里云的源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
更新缓存
yum clean all
yum -y makecache
查看可安装版本
yum list kubelet --showduplicates | sort -r
5.2安装kubeadm、kubectl、kubelet
我这里安装的版本是1.26.4
yum install -y kubelet-1.26.4-0 kubeadm-1.26.4-0 kubectl-1.26.4-0
检查版本信息,版本号保证一致
kubectl version
kubeadm version
kubelet --version
5.3修改docker镜像仓库
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://ogeydad1.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"dns": ["114.114.114.114","8.8.8.8"]
}
EOF
重新加载并重启docker
systemctl daemon-reload
systemctl restart docker
5.4master节点初始化
#注:192.168.1.209这里是本机IP地址噢
kubeadm init --kubernetes-version=1.26.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.209 --ignore-preflight-errors=all --image-repository=registry.aliyuncs.com/google_containers
各项参数的说明如下:
--kubernetes-version:指定Kubernetes的版本。
--pod-network-cidr: 指定pod网络的IP地址,它的值取决于你选择哪个网络,比如Flannel网络,因此值需要指定为10.244.0.0/16,因为Flannel网络相对于其他网络要简单一些,对于刚开始搭建Kubernetes集群比较友好,需要的配置较少,功能也较为完善。
--apiserver-advertise-address: 指定master节点发布的IP地址,如果不指定,则会自动检测网络接口,通常是内网IP。
--ignore-preflight-errors:检查错误将显示为检查的警告列表。值为all会忽略所有检查中的错误。
--image-repository:选择一个Container Registry从中拉取控制平面镜像(默认为k8s.gcr.io,这个Container Registry拉取镜像特别慢,会导致超时,换成阿里云的Container Registry)。
初始化成功后如下图所示:
然后给用户授权:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
安装flannal网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
获取flannel pod状态:
kubectl get pod -n kube-system
最后,我们看下node的状态:显示为Ready就表示已经OK啦
kubectl get node
6.优化配置
6.1去除master节点的污点
由于我们搭建的是单节点K8S集群,所以要去除master节点的污点,才可以用作调度。
# 查询污点状态
kubectl describe node k8s-master1 | grep Taints
删除污点,根据查询到的污点名称进行删除,在污点名称后加-符号即可
# 去除污点
kubectl taint node k8s-master1 node-role.kubernetes.io/control-plane:NoSchedule-
再次查询,可以看到已经没有污点了
6.2K8S命令tab键补全
# 执行命令
echo 'source <(kubectl completion bash)' >> /etc/profile
# 生效
source /etc/profile
6.3(可选)修改NodePort端口范围
编辑/etc/kubernetes/manifests/kube-apiserver.yaml
vim /etc/kubernetes/manifests/kube-apiserver.yaml
找到下面的内容的位置:
spec:
containers:
- command:
- kube-apiserver
#在这几行后增加下面一行,指定端口范围
添加一行:
- --service-node-port-range=1-65535
wq保存退出后,重启 kube-apiserver
#查询apiserver_pod的名称
export apiserver_pods=$(kubectl get pods --selector=component=kube-apiserver -n kube-system --output=jsonpath={.items..metadata.name})
#删除apiserver的pod
kubectl delete pod $apiserver_pods -n kube-system
#验证是否生效
kubectl describe pod $apiserver_pods -n kube-system
更多推荐
已为社区贡献1条内容
所有评论(0)