UbutnuServer18.04部署Kubernetes 1.13.4

Kubernetes是Google开源的容器引擎,由于单词很长,常常简称为k8s,8代表k和s之间有8个字母。k8s包含很多组件,用来对容器进行组织,可以对容器进行编排,自动管理容器的运行,实现滚动更新,进行负载均衡等。由于k8s集群搭建非常复杂,出现了很多部署k8s的工具,但是由于国内网络环境的问题,使用这些工具,我们依然很难获取到k8s搭建需要的镜像文件,因此需要采取一些手段来获取搭建环境需要的镜像。最近尝试了几次环境搭建,整理出了自己认为比较简单的一套环境搭建方式。硬件环境包括三台服务器(一台master和两台node),操作系统使用Ubuntu Server 18.04,部署的k8s版本是1.13.4。部署分为两部分,一部分是所有主机都要进行的操作,一些是master和node的不同配置。

  • Master和Node共同的操作

1. ssh登录

2. 关闭防火墙

$ sudo ufw disable

3. 开启IPV4转发

$ sudo vim /etc/sysctl.conf

打开注释

net.ipv4.ip_forward = 1

使之生效

$ sudo sysctl -p

4. 禁止swap

$ sudo swapoff -a
$ sudo vim /etc/fstab

注释掉swap挂载

5. 配置iptables

$ sudo tee /etc/sysctl.d/k8s.conf <<-'EOF'
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

$ sudo sysctl --system

6. 安装docker,使用阿里源

$ sudo apt-get remove docker docker-engine docker.io

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

$ sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

$ sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu

$ sudo systemctl enable docker && sudo systemctl start docker

$ sudo usermod -aG docker USERNAME

注意:上面的USERNAME替换为自己的用户名

7. 添加docker配置

sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "iptables": false,
 "ip-masq": false,
 "storage-driver": "overlay2",
 "graph": "/home/username/docker"
}
EOF

$ sudo systemctl restart docker

注意:graph字段的username替换为自己的用户名

8. 安装kubeadm,kubectl,kubelet,kubeadm是部署k8s的工具,kubectl是我们访问k8s集群的命令行工具,kubelet管理k8s中的容器

$ sudo apt-get update && sudo apt-get install -y apt-transport-https curl

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

$ sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

$ sudo apt-get update

$ sudo apt-get install -y kubelet=1.13.4-00 kubeadm=1.13.4-00 kubectl=1.13.4-00

$ sudo apt-mark hold kubelet=1.13.4-00 kubeadm=1.13.4-00 kubectl=1.13.4-00

$ sudo systemctl enable kubelet && sudo systemctl start kubelet

9. 下载必要的镜像,这里为了方便,我写在了.image_pull.sh脚本中,可以用来从其他源获取镜像,然后重新打tag

$ ./image_pull.sh

image_pull.sh内容如下

#!/bin/bash
images=(kube-proxy:v1.13.4 kube-scheduler:v1.13.4 kube-controller-manager:v1.13.4 kube-apiserver:v1.13.4 etcd:3.2.24 pause:3.1)
for imageName in ${images[@]} ; do
  sudo docker pull mirrorgooglecontainers/$imageName
  sudo docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName
  sudo docker rmi mirrorgooglecontainers/$imageName
done

sudo docker pull carlziess/coredns-1.2.6
sudo docker tag carlziess/coredns-1.2.6:latest k8s.gcr.io/coredns:1.2.6
sudo docker rmi carlziess/coredns-1.2.6

sudo docker pull jmgao1983/flannel:v0.11.0-amd64
sudo docker tag jmgao1983/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
sudo docker rmi jmgao1983/flannel:v0.11.0-amd64

注意:上面的镜像版本可以通过命令查看

sudo kubeadm config images list --kubernetes-version=v1.13.4
  • Master部署

1. 初始化

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.13.4

2. 配置kubectl

$ mkdir -p $HOME/.kube

$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. 将master加入工作节点,默认master不会被作为工作节点在其上调度容器运行

$ kubectl taint nodes --all node-role.kubernetes.io/master-

4. 配置flannel,flannel是k8s支持的网络组件

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

5. 生成永久token和秘钥,记录备用,默认生成的token存在有效期

$ kubeadm token create --ttl 0

$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
  • Node部署

1. node加入集群的命令

$ sudo kubeadm join MASTER_IP:6443 --token TOKEN --discovery-token-ca-cert-hash sha256:SHA256

注意:MASTER_IP替换为master服务器的IP,TOKEN和SHA256是上面master生成的

部署完成后,在master节点执行命令

$ sudo kubectl get po -n kube-system

如果发现所有的pod都处于Running状态,则集群搭建成功,否则按着上面步骤过一遍,看看是不是遗漏了什么。

UbutnuServer18.04部署Kubernetes 1.13.4_第1张图片

 

你可能感兴趣的:(Kubernetes)