从零开始搭建k8s和kubesphere

📕 virturalBox 虚拟机搭建linux集群

为什么使用虚拟机呢,因为贫穷

  1. 下载安装virturalBox
  2. 下载安装vagrant
  3. 在指定文件夹下打开cmd命令窗口(管理员运行),初始化镜像 vagrent init centos/7
  4. vagrant up 创建虚拟机,太慢的话可以去官网下载,我这里用的这种方式 vagrant box add centos CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box 安装
  5. 创建完成后 vagrant ssh 链接
  6. 更改Vagrantfile 的 config.vm.network “private_network” , ip : “192.168.33.10” # 与虚拟机网卡在同一个网段
  7. vagrant reload 重启

📕 k8s环境搭建

Vagrantfile

Vagrant.configure("2") do |config|
   (1..3).each do |i|
        config.vm.define "k8s-node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos7"

            # 设置虚拟机的主机名
            node.vm.hostname="k8s-node#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"

            # 设置主机与虚拟机的共享目录
            # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

            # VirtaulBox相关配置
            node.vm.provider "virtualbox" do |v|
                # 设置虚拟机的名称
                v.name = "k8s-node#{i}"
                # 设置虚拟机的内存大小
                v.memory = 4096
                # 设置虚拟机的CPU个数
                v.cpus = 2
            end
        end
   end
end

调用指令 vagrant up 创建三台虚拟机
创建完成后分别登陆三台虚拟机开启密码访问

vagrant ssh k8s-node1
su root # 切换为root用户
vim /etc/ssh/sshd_config 
#将 passwordAuthentication  no 改为 yes
service sshd restart
exit
vagrant ssh k8s-node2
... # 同上

完成后打开xShell 使用这个来进行连接,连接三台虚拟机,用户名root 密码 vagrant
连接后查看网卡发现都一样需要修改网卡,不应该使用同一个网卡,在virtualBox中关闭三台虚拟机重新设置网络模式
在virtualBox的全局设置中添加网络,每一个虚拟机设置中修改网络模式为nat网络,在高级中重新生成mac地址,设置完成后启动三台虚拟机
互相ping一下可以ping通,ping一下百度可以ping通,说明网络配置没问题了
关闭防火墙,安全策略和分区

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 关闭 swap
swapoff -a
# 配置永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
free -g # 验证一下

添加host 映射

vi /etc/hosts
# 填写主机域名解析
10.0.2.4 k8s-node1
10.0.2.5 k8s-node2
10.0.2.15 k8s-node3

将桥接的IPV4流量传递到iptables链

# 配置流量传递
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
sysctl --system

准备好之后可以生成一个备份
为每一个节点安装docker

# 卸载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
# 设置镜像仓库 使用阿里仓库
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动docker
sudo systemctl start docker
# 启动docker hello-world 默认镜像
sudo docker run hello-world
# 启动成功后删除此镜像(不删除也行就是占地方)
# 设置阿里镜像加速
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]}EOF 
sudo systemctl daemon-reload 
sudo systemctl restart docker
# 设置开机自启
sudo systemctl enable docker

安装k8s

# 添加阿里下载源
cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[kubernetes]    
name=Kubernetes 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=0 
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
# 安装 kubeadm kubelet kubectl
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3 
# 一定要设置开机启动
systemctl enable kubelet 
# 启动一下 
systemctl start kubelet
# 查看状态 此时应该是启动不起来的,环境还没有配置好
systemctl status kubelet

初始化master 节点,执行下面的bash文件

# 首先手动安装一下插件
#!/bin/bash
images=(
	kube-apiserver:v1.17.3
    kube-proxy:v1.17.3
	kube-controller-manager:v1.17.3
	kube-scheduler:v1.17.3
	coredns:1.6.5
	etcd:3.4.3-0
    pause:3.1
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
#   docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName  k8s.gcr.io/$imageName
done
# 初始化master 这里要修改node1的addr,指定node1为master 这里不要发送所有只发送给master
kubeadm init --apiserver-advertise-address=10.0.2.4 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16

初始化后根据提示输入指令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 看给的提示是怎么写的
kubeadm join 10.0.2.4:6443 --token woq4i9.kzsnvsil4oka2de8 \
    --discovery-token-ca-cert-hash sha256:81d69c7ce44a029a2478536c2191923d916f7a9652191deda94d1cdb03bfc4fa 

如果时间过长会过期,过期的话可以执行下面指令重新生成一个

kubeadm token create --print-join-command 
kubeadm token create --ttl 0 --print-join-command
# 复制生成的那个
kubeadm join --token y1eyw5.ylg568kvohfdsfco --discovery-token-ca-cert-hash sha256: 6c35e4f73f72afd89bf1c8c303ee55677d2cdb1342d67bb23c852aba2efc7c73

安装pod网络插件

kubectl apply -f \ https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 这个可能被墙,可以使用提前准备好的

给node2和node3写入

kubeadm join 10.0.2.4:6443 --token woq4i9.kzsnvsil4oka2de8 \
    --discovery-token-ca-cert-hash sha256:81d69c7ce44a029a2478536c2191923d916f7a9652191deda94d1cdb03bfc4fa 

踩坑 关于加入节点卡死问题

date查看时间是否同步

yum install -y ntpdate 
ntpdate time.windows.com

在node1 输入指令监控进度,当所有ready后说明k8s集群部署完成

watch kubectl get pod -n kube-system -o wide

📕 kubesphere可视化工具

准备工作,参照官网,最后一条需要一个storageClass
以openEBS 作为 StorageClass

# 创建namespace
kubectl create ns openebs
# 安装openebs
kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml
# 设置openebs为默认存储
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
# 查看默认存储
kubectl get sc

按照官网的步骤部署kubesphere, 这里一定要确定集群时间是同步的,不然会报拒绝连接(啊,这个搞了一天才搞定,虚拟机重启和回退副本会导致时间不同步)

# 同步时间
ntpdate time.windows.com
# 执行命令
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml
# 检查安装日志,等着就行时间很长可以去睡会哈哈
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
# 看到这个界面说明安装完成
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://10.0.2.4:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components 
     are up and running.
  2. Please change the default password after login.
######################################################

# 查看是否全部正常运行
kubectl get pod --all-namespaces
kubectl get svc/ks-console -n kubesphere-system
# 确保在安全组中打开了端口 30880,并通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台。

登录完成后,启用可插拔组件接着看官网

# 点击左上角的平台管理,然后选择集群管理.点击自定义资源 CRD,然后在搜索栏中输入 clusterconfiguration,点击搜索结果进入其详情页面。
# 在资源列表中,点击 ks-installer 右侧的三个点,然后选择编辑配置文件
# 将对应组件 enabled 的 false 更改为 true,以启用要安装的组件.完成后,点击更新以保存配置.
# 这里我们启用 devops,通知系统和告警系统,内存顶的住的话可以多开几个
devops:
    enabled: true
    jenkinsJavaOpts_MaxRAM: 2g
    jenkinsJavaOpts_Xms: 512m
    jenkinsJavaOpts_Xmx: 512m
    jenkinsMemoryLim: 2Gi
    jenkinsMemoryReq: 1000Mi # 限制一下内存
    jenkinsVolumeSize: 8Gi
alerting:
    enabled: true
# 完成后点击更新控制台调用logs 查看进度等待安装信息
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
从零开始搭建一个 Kubernetes(简称K8s)集群可以按照以下步骤进行: 1. 选择操作系统:选择适合你的需求的操作系统,比如Ubuntu、CentOS等。 2. 安装DockerKubernetes使用Docker容器来运行应用程序,因此需要先安装Docker。可以通过官方文档来安装适合你操作系统版本的Docker。 3. 安装Kubernetes的控制节点(Master):在控制节点上安装Kubernetes的各个组件,包括kube-apiserver、kube-controller-manager、kube-scheduler等。可以通过二进制文件手动安装,或者使用Kubeadm工具来简化安装过程。 4. 配置网络:配置网络使得集群内的各个节点能够相互通信。可以选择使用Flannel、Calico等网络插件来实现网络配置。 5. 添加工作节点(Worker):在工作节点上安装DockerKubernetes的各个组件,比如kubelet和kube-proxy。可以使用同样的方式安装DockerKubernetes组件。 6. 加入工作节点到集群:在控制节点上使用Kubeadm工具将工作节点加入到集群中。 7. 部署应用程序:通过Kubernetes的资源对象(如Pod、Service、Deployment等)来部署应用程序。可以使用kubectl命令行工具或者YAML文件来定义和创建这些资源对象。 以上是一个大致的搭建Kubernetes集群的步骤,具体的安装和配置过程可能会因为操作系统和版本的不同而有所差异。你可以参考官方文档或者一些教程来获取更详细的指导。同时,搭建Kubernetes集群需要一定的系统管理和网络知识,确保你有足够的了解和准备。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值