ubuntu下安装K8S集群

前言

本文将不翻墙部署一个3节点(1主2从)集群,已经在ubuntu2004上测试通过。

配置3节点集群,您的电脑最好有:

  • 至少4个逻辑核心
  • 至少8G内存
  • 20-40G以上空闲硬盘空间(视您所使用的镜像大小)
  1. 我们首先在一个ubuntu虚拟机中配置好基本环境,将来作为master节点
  2. 然后复制出另外两份作为node节点
  3. 用官方 kubeadm 工具在三台虚拟机上建立集群
  4. 最后用redis作为负载来测试集群

接下来全部过程都使用root进行

1. 配置通用设置

安装docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
apt install docker.io
systemctl enable docker
systemctl start docker
systemctl status docker
cat >  /etc/docker/daemon.json << EOF
{
    "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"],
    "live-restore": true
}
EOF
systemctl daemon-reload
systemctl restart docker

安装kubeadm、kubectl、kubelet

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

cat << EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF

apt-get update && apt-get install -y kubelet kubeadm kubectl

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile

systemctl enable kubelet
systemctl daemon-reload
systemctl restart kubelet

修改配置

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 禁用Selinux
apt install selinux-utils
setenforce 0
# 禁用swap
swapoff -a
#  !!! 同时把/etc/fstab包含swap那行记录删掉!!!

2. 分别配置三台虚拟机

如果你的电脑配置不高,可以将两个node调成 1G 1CPU。

  • 修改hostname
echo k8s-master > /etc/hostname

我将三台虚拟机hostname分别设置为:

k8s-master

k8s-node1

k8s-node2

  • 设置静态IP

查看虚拟机分配的 IP、DNS主机、网关、掩码 并将其设置为静态

ip addr

我将三台虚拟机IP分别设置为:
192.168.35.130
192.168.35.131
192.168.35.132

3. 建立集群

3.1 拉起master

在mster上运行

kubeadm init \
--pod-network-cidr=10.244.0.0/16 \				# 这里是k8s集群内部地址,不懂就这么填
--apiserver-advertise-address=<master地址> \		# !!!这里填写master IP地址!!!
--kubernetes-version=v1.18.5 \					# 这里是版本
--ignore-preflight-errors=Swap \
--image-repository registry.aliyuncs.com/google_containers # 这里制定国内源,是不翻墙的重点

输出信息:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.35.130:6443 --token 13zy98.ubjskmoo7rqthc4n \
  --discovery-token-ca-cert-hash sha256:5a2fbd7d74327c3ea716835fc49cb2cf8d9db3ec29af2925812cbc4b811d8383

这是用来将其他node添加到集群中去的命令。

如果想要在node节点通过kubectl控制集群,则需要复制master的admin.conf到node中去

如果没有这个需求,则不需要进行此操作

在master上运行:

scp /etc/kubernetes/admin.conf root@192.168.35.131:/etc/kubernetes/admin.conf
scp /etc/kubernetes/admin.conf root@192.168.35.132:/etc/kubernetes/admin.conf

在node上运行:

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source  /etc/profile

3.2 配置Node

在各个node节点执行如下命令(对应master配置返回的 kubeadm join命令)

kubeadm join 192.168.35.130:6443 --token rsg7xg.jhvlw3gce9anvjhj \
    --discovery-token-ca-cert-hash sha256:467c678d8d66687fb8111355f4de08afaa93437682754524dcf6dae4c9434dcf 

部署完成,接下来我们测试一下。

4. 测试集群

简介

用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。

部署

官方参考文档:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

github项目地址:
https://github.com/kubernetes/dashboard

执行yaml文件直接部署:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
1

查看dashboard运行状态:

[root@master ~]# kubectl -n kubernetes-dashboard get pods
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-694557449d-wfv4b   1/1     Running   0          4m50s
kubernetes-dashboard-9774cc786-v9ltx         1/1     Running   0          4m50s


[root@master ~]# kubectl -n kubernetes-dashboard get svc 
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.100.165.238   <none>        8000/TCP   4m52s
kubernetes-dashboard        ClusterIP   10.109.218.125   <none>        443/TCP    4m52s
12345678910

访问

使用nodeport方式将dashboard服务暴露在集群外,指定使用30443端口,可自定义:

kubectl  patch svc kubernetes-dashboard -n kubernetes-dashboard \
-p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
12

查看暴露的service,已修改为nodeport类型:

# kubectl -n kubernetes-dashboard get svc
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.102.18.37     <none>        8000/TCP        69s
kubernetes-dashboard        NodePort    10.110.118.188   <none>        443:30443/TCP   69s
1234

也可以通过其他方式暴露服务,这里不再赘述。

登录

浏览器访问dashboard:

https://<node_ip>:30443

Dashboard 支持 Kubeconfig 和 Token 两种认证方式,我们这里选择Token认证方式登录。

官方参考文档:

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

创建dashboard-adminuser.yaml:

cat > dashboard-adminuser.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard  
EOF

创建登录用户

kubectl apply -f dashboard-adminuser.yaml

说明:上面创建了一个叫admin-user的服务账号,并放在kubernetes-dashboard 命名空间下,并将cluster-admin角色绑定到admin-user账户,这样admin-user账户就有了管理员的权限。默认情况下,kubeadm创建集群时已经创建了cluster-admin角色,我们直接绑定即可。

查看admin-user账户的token

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

把获取到的Token复制到登录界面的Token输入框中,成功登陆dashboard。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装 Kubernetesk8s集群Ubuntu 上可以分为几个步骤: 1. 确保你的 Ubuntu 系统已经更新到最新版本,并且具备以下硬件要求: - 64-bit CPU - 至少 2GB 内存(推荐 4GB 或以上) - 至少 20GB 可用磁盘空间 - 具备 root 权限或者 sudo 权限 2. 安装 Docker: ```shell $ sudo apt-get update $ sudo apt-get install docker.io ``` 3. 配置 Docker 镜像加速(可选): ```shell $ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://your-mirror.example.com"] } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker ``` 4. 安装 kubeadm、kubelet 和 kubectl: ```shell $ sudo apt-get update && sudo apt-get install -y apt-transport-https curl $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list $ sudo apt-get update $ sudo apt-get install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl ``` 5. 初始化 kubeadm: ```shell $ sudo kubeadm init ``` 6. 按照初始化的输出信息,设置 kubeconfig 文件和普通用户的访问权限: ```shell $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件(例如 Flannel): ```shell $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 8. 等待一段时间,直到所有的 Kubernetes 组件都启动成功: ```shell $ kubectl get pods --all-namespaces ``` 这样,你就成功在 Ubuntu安装了一个基本的 Kubernetes 集群。你可以继续添加更多的节点,或者部署应用程序到集群中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值