梦想存储罐
 
首页
归档
标签
关于
2020-08-01
9 分钟阅读
ubuntu k8s docker

ubuntu通过Kubeadmin部署K8s集群

/post/ubuntu-tong-guo-kubeadmin-bu-shu-k8s-ji-qun/
https://zylikedream.github.io

热度🔥: loading...

通过vmware虚拟机安装两个ubuntu系统,部署k8s集群。其中要把虚拟机的网卡模式要选择为桥接模式(默认为NAT)

ubuntu版本:

关闭SWAP内存

  1. k8s要求关闭电脑的swap内存,修改**/etc/fstab**文件, 注释掉红框内的两行:

  2. 然后重启电脑reboot

  3. 使用命令free -m查看虚拟内存, 可以看到swap内存已经为0了

安装和配置docker

  1. 安装docker:sudo apt install docker.io

  2. 设置开机运行docker: systemctl enable docker.service

  3. docker -v 查看docker版本

  4. 修改docker下载镜像为国内源,编辑**/etc/docker/daemon.json**:

    sudo vim /etc/docker/daemon.json
    

    ​ 打开后输出以下内容:

    {
      "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://reg-mirror.qiniu.com",
        "https://quay-mirror.qiniu.com"
      ],
    }
    
  5. 修改cgroups。docker用它来实现容器的隔离,cgroups是docker默认使用的方式,而k8s使用的隔离工具是systemd,如果两个隔离的方式不同的话可能引起异常,所以芭doker的也修改为systemd,在此编辑**/etc/docker/daemon.json**,添加如下内容

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

  1. 重启docker

    sudo service docker restart
    
  2. 查看cgroups的类型已经修改为了systemd

为了避免每次都要sudo才能执行docker的相关操作,可以把当前用户加入docker组里:

sudo gpasswd -a ${USER} docker // 把当前用户加入docker用户组
newgrp - docker // 用户组切换为docker

之后就可以直接执行docker的相关操作了

安装k8s

安装k8s主要是安装三个主要组件kubelet、kubeadm以及kubectl:

  • kubelet:k8s的核心服务
  • kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成
  • kubectl: k8s 的命令行工具,与k8s的交互都是通过它来完成

由于某些原因,,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可。

# 使得 apt 支持 ssl 传输
sudo apt install -y apt-transport-https
# 下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 
# 添加 k8s 镜像源
sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
	deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
	EOF'
# 更新源列表
sudo apt update
# 下载 kubectl,kubeadm以及 kubelet
sudo apt install -y kubelet kubeadm kubectl

配置master节点

  1. 修改master的ip为静态ip

  2. 使用kubeadm init命令初始化master节点:

    # --apiserver-advertise-address对应的ip地址需要修改自己机器的地址
    sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.244.0.0/16 
    

    说明一下各个参数的含义:

    • --apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的管理节点 ip
    • --image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。
    • -pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16就好
  3. 虽然配置了image-repository,但是依然会发现报无法拉取镜像的错误。

  4. 我们根据报错只能收到去docker.hub上去手动安装对应的docker镜像

    这儿以第一个错为例可以看到是拉取kube-apiserver:v1.18.6的版本出错了

    • 我们去 dockerhub上搜索对应的镜像

    • 我们选择第二个,然后在其中找到对应版本的镜像

    • 复制镜像的下载地址:

    • 下载镜像:

    • 需要对下载镜像打tag,关联k8s需要的镜像名字

  5. 对所有报错的镜像,执行同样的操作。执行sudo kubeadm reset重置环境,再重新执行kubeadm Init即可:

    sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.244.0.0/16 
    

    如果出现了下面的字样就表示安装成功了:

红框中的kubeadm join指令需要复制下来,其他的节点加入集群时需要用到的指令,如果忘了就执行kubeadm token create --print-join-command重新生成一条。

如果在安装中出现了任何错误,需要执行sudo kubeadm reset重置环境以后,再执行上面的kubeadm init指令

配置kubectl工具

  1. 执行下面的命令

    mkdir -p ~/.kube
    sudo cp /etc/kubernetes/admin.conf ~/.kube/config
    sudo chown -R `whoami`:`whoami` ~/.kube 
    
  2. 测试是否可用:

    kubectl get nodes
    

    如果能看到下面类似的结果就表示可以用了

部署 flannel 网络

flannel是一个专门为 k8s 设置的网络规划服务,可以让集群中的不同节点主机创建的 docker 容器都具有全集群唯一的虚拟IP地址。想要部署flannel的话直接执行下述命令即可:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

由于raw.githubusercontent.com被墙了,所以需要现在IpAdress.com输入raw.githubusercontent.com查询ip地址然后添加到hosts文件

  • 查询ip

  • 修改hosts文件,sudo vim /etc/hosts,添加查询到的ip地址

如果输出了下面类似的内容,则表示安装成功:

至此k8s的master节点部署完成

克隆一个worker的虚拟机

woker节点,也需要安装K8s和docker相关工具,为了方便我们之间从master虚拟机克隆一台来作为node(克隆前需要先关闭虚拟机):

需要注意克隆类型选择完整克隆

克隆成功后进入worker机器 由于master是设置的静态ip,克隆出来的虚拟机ip会有冲突,所以我们还需要修改ip地址。

将 node 节点加入网络

  1. 由于我们node节点是从master里克隆出来的,所以主机名会重复,我们需要修改主机名为node:

    sudo hostnamectl set-hostname node
    

    再使用hostname查看改动是否生效:

  2. 执行master节点生成的kubeadm join指令

    sudo kubeadm join 192.168.1.6:6443 --token purbtm.12d7g98hq3kljqof     --discovery-token-ca-cert-hash sha256:c0b3f8da3ae4a668e3159716f4a821adf32166940103ac807f19d5c9df46a1e2
    

    注意不要直接复制,每个机器都会不一样。

    如果执行错误了,同样需要执行kubeadm reset重置,再重新执行命令

    如果出现了下面类似的输出,就表示成功了:

  3. 回到master节点,执行kubectl get nodes查看节点情况,可以看出node已经加了节点:

下一篇 使用代理加速github

请到客户端“主题--自定义配置--valine”中填入ID和KEY

default
\media\images\custom-bgimage.jpg
梦想存储罐  |
  • 首页
  • 归档
  • 标签
  • 关于
2020-08-01
9 分钟阅读
ubuntu k8s docker

ubuntu通过Kubeadmin部署K8s集群

/post/ubuntu-tong-guo-kubeadmin-bu-shu-k8s-ji-qun/
https://zylikedream.github.io

热度🔥: loading...

通过vmware虚拟机安装两个ubuntu系统,部署k8s集群。其中要把虚拟机的网卡模式要选择为桥接模式(默认为NAT)

ubuntu版本:

关闭SWAP内存

  1. k8s要求关闭电脑的swap内存,修改**/etc/fstab**文件, 注释掉红框内的两行:

  2. 然后重启电脑reboot

  3. 使用命令free -m查看虚拟内存, 可以看到swap内存已经为0了

安装和配置docker

  1. 安装docker:sudo apt install docker.io

  2. 设置开机运行docker: systemctl enable docker.service

  3. docker -v 查看docker版本

  4. 修改docker下载镜像为国内源,编辑**/etc/docker/daemon.json**:

    sudo vim /etc/docker/daemon.json
    

    ​ 打开后输出以下内容:

    {
      "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://reg-mirror.qiniu.com",
        "https://quay-mirror.qiniu.com"
      ],
    }
    
  5. 修改cgroups。docker用它来实现容器的隔离,cgroups是docker默认使用的方式,而k8s使用的隔离工具是systemd,如果两个隔离的方式不同的话可能引起异常,所以芭doker的也修改为systemd,在此编辑**/etc/docker/daemon.json**,添加如下内容

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

  1. 重启docker

    sudo service docker restart
    
  2. 查看cgroups的类型已经修改为了systemd

为了避免每次都要sudo才能执行docker的相关操作,可以把当前用户加入docker组里:

sudo gpasswd -a ${USER} docker // 把当前用户加入docker用户组
newgrp - docker // 用户组切换为docker

之后就可以直接执行docker的相关操作了

安装k8s

安装k8s主要是安装三个主要组件kubelet、kubeadm以及kubectl:

  • kubelet:k8s的核心服务
  • kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成
  • kubectl: k8s 的命令行工具,与k8s的交互都是通过它来完成

由于某些原因,,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可。

# 使得 apt 支持 ssl 传输
sudo apt install -y apt-transport-https
# 下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 
# 添加 k8s 镜像源
sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
	deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
	EOF'
# 更新源列表
sudo apt update
# 下载 kubectl,kubeadm以及 kubelet
sudo apt install -y kubelet kubeadm kubectl

配置master节点

  1. 修改master的ip为静态ip

  2. 使用kubeadm init命令初始化master节点:

    # --apiserver-advertise-address对应的ip地址需要修改自己机器的地址
    sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.244.0.0/16 
    

    说明一下各个参数的含义:

    • --apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的管理节点 ip
    • --image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。
    • -pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16就好
  3. 虽然配置了image-repository,但是依然会发现报无法拉取镜像的错误。

  4. 我们根据报错只能收到去docker.hub上去手动安装对应的docker镜像

    这儿以第一个错为例可以看到是拉取kube-apiserver:v1.18.6的版本出错了

    • 我们去 dockerhub上搜索对应的镜像

    • 我们选择第二个,然后在其中找到对应版本的镜像

    • 复制镜像的下载地址:

    • 下载镜像:

    • 需要对下载镜像打tag,关联k8s需要的镜像名字

  5. 对所有报错的镜像,执行同样的操作。执行sudo kubeadm reset重置环境,再重新执行kubeadm Init即可:

    sudo kubeadm init --apiserver-advertise-address=192.168.1.6 --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.244.0.0/16 
    

    如果出现了下面的字样就表示安装成功了:

红框中的kubeadm join指令需要复制下来,其他的节点加入集群时需要用到的指令,如果忘了就执行kubeadm token create --print-join-command重新生成一条。

如果在安装中出现了任何错误,需要执行sudo kubeadm reset重置环境以后,再执行上面的kubeadm init指令

配置kubectl工具

  1. 执行下面的命令

    mkdir -p ~/.kube
    sudo cp /etc/kubernetes/admin.conf ~/.kube/config
    sudo chown -R `whoami`:`whoami` ~/.kube 
    
  2. 测试是否可用:

    kubectl get nodes
    

    如果能看到下面类似的结果就表示可以用了

部署 flannel 网络

flannel是一个专门为 k8s 设置的网络规划服务,可以让集群中的不同节点主机创建的 docker 容器都具有全集群唯一的虚拟IP地址。想要部署flannel的话直接执行下述命令即可:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

由于raw.githubusercontent.com被墙了,所以需要现在IpAdress.com输入raw.githubusercontent.com查询ip地址然后添加到hosts文件

  • 查询ip

  • 修改hosts文件,sudo vim /etc/hosts,添加查询到的ip地址

如果输出了下面类似的内容,则表示安装成功:

至此k8s的master节点部署完成

克隆一个worker的虚拟机

woker节点,也需要安装K8s和docker相关工具,为了方便我们之间从master虚拟机克隆一台来作为node(克隆前需要先关闭虚拟机):

需要注意克隆类型选择完整克隆

克隆成功后进入worker机器 由于master是设置的静态ip,克隆出来的虚拟机ip会有冲突,所以我们还需要修改ip地址。

将 node 节点加入网络

  1. 由于我们node节点是从master里克隆出来的,所以主机名会重复,我们需要修改主机名为node:

    sudo hostnamectl set-hostname node
    

    再使用hostname查看改动是否生效:

  2. 执行master节点生成的kubeadm join指令

    sudo kubeadm join 192.168.1.6:6443 --token purbtm.12d7g98hq3kljqof     --discovery-token-ca-cert-hash sha256:c0b3f8da3ae4a668e3159716f4a821adf32166940103ac807f19d5c9df46a1e2
    

    注意不要直接复制,每个机器都会不一样。

    如果执行错误了,同样需要执行kubeadm reset重置,再重新执行命令

    如果出现了下面类似的输出,就表示成功了:

  3. 回到master节点,执行kubectl get nodes查看节点情况,可以看出node已经加了节点:

下一篇 使用代理加速github

请到客户端“主题--自定义配置--valine”中填入ID和KEY

代码复制成功了哦
https://zylikedream.github.io