ubuntu18.04搭建k8s1.18集群
ubuntu系统搭建k8s集群
搭建k8s集群
前言
k8s版本:1.18
docker版本:5:19.03.9~3-0
1 初始化系统
1.1 关闭交换区
swapoff -a && sysctl -w vm.swappiness = 0
1.2 关闭防火墙
systemctl stop ufw && systemctl disable ufw
1.3 清空docker的东西
sudo apt-get remove docker docker-engine docker.io containerd runc
1.4 修改主机名字,便于区分
sudo hostnamectl set-hostname master
vim /etc/hosts
192.168.193.103 hosts
2 安装docker
2.1 Set up the repository
1 更新软件包索引并安装软件包以允许使用 基于 HTTPS 的安装库:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
2 添加 Docker 的官方 GPG 密钥:
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3 使用以下命令设置安装库:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
2.2 Install Docker Engine
1 更新apt
sudo apt-get update
Receiving a GPG error when running ?
解决方法:sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
2 安装Docker Engine, containerd, and Docker Compose,这里指定版本号
首先列出可用的 存储库中的版本:
# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'
5:19.03.9~3-0~ubuntu-bionic
5:20.10.15~3-0~ubuntu-bionic
5:20.10.14~3-0~ubuntu-bionic
5:20.10.13~3-0~ubuntu-bionic
选择所需的版本并安装:
VERSION_STRING=5:19.03.9~3-0~ubuntu-bionic
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
通过运行映像验证 Docker 引擎安装是否成功:
sudo docker run hello-world
补充:
安装最新版本:直接用以下命令
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3 修改/etc/docker/daemon.json文件,后续k8s初始化可能会出错
主要是修改"exec-opts": [“native.cgroupdriver=systemd”]
cat <<EOF >/etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"], #记住这个systemd,后续初始化可能会出错
"log-driver": "json-file",
"log-opts":
{
"max-size": "100m"
},
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://quay-mirror.qiniu.com"
],
"storage-driver": "overlay2"
}
EOF
使该文件生效并重启docker
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
3 安装k8s
直接在root模式下操作
3.1 添加阿里云的 GPG 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
3.2 设置repository url
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
3.3 安装k8s
sudo apt-get update
#这里指定版本号1.18.10-00
sudo apt-get install -y kubeadm=1.18.10-00 kubectl=1.18.10-00 kubelet=1.18.10-00
3.4 初始化
kubeadm init \
--kubernetes-version=v1.18.10 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.193.103 \ #修改为自己的ip
--image-repository registry.aliyuncs.com/google_containers
注意!!!:
初始化成功后,注意最后的提示信息与节点加入命令,大致如下(按实际情况):
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join 223.193.6.2:6443 --token 57bxyl.yvjd6rr94p0rbxu6 \
--discovery-token-ca-cert-hash sha256:b375301a83fb68f4a394f64a80a2672006b7af098e7c6bb539b142833186c163
3.5 查看节点信息
只有master节点时,也是可以感知自身信息的
sudo kubectl get nodes
可以发现此时主节点状态是 notready
因为没有装网络插件!
方法一:安装Calico插件(作者选择的该插件)
将下载好的calico.yaml文件放到安装目录下,直接运行以下命令:
kubectl apply -f calico.yaml
或者,没有下载好的yaml文件,直接:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
方法二:安装Flannel插件(未尝试)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#Edit kube-flannel.yml file, add - --iface=interface-name
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.11.0-arm
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=eno1 #视实际情况修改
End
#Deployment
kubectl apply -f kube-flannel.yml
3.6 修改主节点也可作为从节点
kubectl taint nodes --all node-role.kubernetes.io/master-
3.7 安装dashboard插件
将下载好的dashboard文件夹放到安装路径下
cd dashboard
kubectl apply -f dashboard_cluster_role_binding_admin.yaml
kubectl apply -f dashboard_service_account_admin.yaml
kubectl apply -f recommended.yaml
cd ..
修改recommended.yaml文件,添加端口号以在浏览器里打开
---
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #添加的
ports:
- port: 443
targetPort: 8443
nodePort: 30443 #添加的
selector:
k8s-app: kubernetes-dashboard
---
获得token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-token | awk '{print $1}')
得到admin-user的token后,在浏览器输入https://192.168.193.103(自己机器的ip地址):30443,然后输入token就能进入dashboard。
补充:新版本k8s安装dashboard 的方式不一样了,不自动生成token
#install dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
#创建 dashboard-admin 用户
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
#绑定 clusterrolebinding
kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
#创建文件 dashboard-admin-token.yaml
apiVersion: v1
kind: Secret
metadata:
name: dashboard-admin-secret
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: dashboard-admin
type: kubernetes.io/service-account-token
#创建token
kubectl apply -f dashboard-admin-token.yaml
#获取token
kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard
3.8 安装metrics插件
#apiserver, enable aggregator-routing
#/etc/kubernetes/manifests/kube-apiserver.yaml
sed -i '23a \ \ \ \ - --enable-aggregator-routing=true' /etc/kubernetes/manifests/kube-apiserver.yaml
#...
#spec:
# containers:
# - command:
#...
# - --enable-aggregator-routing=true
#metrics-server.yaml
kubectl apply -f metrics-server.yaml
##image failed
docker pull k8simage/metrics-server:v0.5.0
docker tag k8simage/metrics-server:v0.5.0 k8s.gcr.io/metrics-server/metrics-server:v0.5.0
以上是master节点的操作!!!
从节点也需要安装doker与k8s,但不需要初始化节点,用主节点初始化得出的命令,加入到主节点中即可!!!
4 k8s node节点重新加入master集群
4.1 删除node节点
kubectl delete node node1
4.2 重置节点
主节点与从节点都:
Kubeadm reset
根据提示删除文件
rm -rf $HOME/.kube/config
rm -rf /etc/cni/net.d
更多推荐
所有评论(0)