Ubuntu 18.04安装k8s 集群

 

实际生产环境集群或单机AllInOne安装推荐

参照easzlab/kubeasz项目

https://github.com/easzlab/kubeasz
注意:

  • 该项目的kubernetes_dashboard的服务对外暴露采用的是NodePort方式
  • 访问kubernetes_dashboard需要使用firefox浏览器

分块手动安装便于理解和学习

环境: 两台装有Ubuntu的机器 一台作为master 一台作为work node

更改ubuntu的apt源

替换cn.archive.ubuntu.com为mirrors.163.com

 sudo nano /etc/apt/sources.list
 sudo apt update
复制代码

固定当前IP更改主机名

$HOSTNAME 根据具体角色来确定 比如master,node1

sudo hostnamectl set-hostname $HOSTNAME
sudo  nano /etc/hosts
复制代码
sudo bash -c 'cat <<EOF >/etc/netplan/01-network-manager-all.yaml
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.2.107/24]
      gateway4: 192.168.2.1
      nameservers:
        addresses: [192.168.2.1]
EOF'
sudo netplan apply
sudo 
复制代码

反向代理gcr.io,quay.io

配置目的主要是不想在yaml文件中改image源 无法反向代理k8s.gcr.io如果有谁知道怎么处理,请告知我

sudo apt install nginx
sudo bash -c 'cat <<EOF >/etc/nginx/conf.d/proxy.conf
server {
    listen       80;
    server_name  gcr.io;
    location / {
        proxy_pass http://gcr.azk8s.cn;
    }
}
server {
    listen       80;
    listen 443 ssl;
    server_name  quay.io;
    location / {
        proxy_pass   http://quay.azk8s.cn;
    }
}
EOF'
sudo systemctl restart nginx
sudo bash -c 'cat >>/etc/hosts<<EOF
127.0.0.1 quay.io
127.0.0.1 gcr.io

EOF'
复制代码

### 安装Docker

将当前用户添加到docker组
sudo usermod -aG docker $USER
重新登录以使更改生效
启动docker并使其能够在后台驻留
sudo systemctl start docker
sudo systemctl enable docker

关闭Swap

sudo swapoff -a
sudo nano /etc/fstab
注释掉swap.img开头的行

添加key和源

添加k8s GPG key:
curl http://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
添加k8s国内源 (注意版本代号为xenial而不是yakkety):

sudo bash -c 'cat  << EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF'
复制代码

sudo apt-get update

安装必要的软件

sudo apt-get install docker.io kubeadm kubelet kubectl -y
若想安装指定的版本:
sudo apt-get install kubeadm=1.10.2-00 kubectl=1.10.2-00 kubelet=1.10.2-00

设置docker mirror

sudo bash -c 'cat  << EOF >/etc/docker/daemon.json
{
 "registry-mirrors": ["https://hub-mirror.c.163.com"],
 "insecure-registries": ["gcr.io", "k8s.gcr.io", "quay.io"]
}
EOF'
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码

使用国内云或azure镜像

此步骤可跳过,在下一本的初始化master参数中可以指定image仓库 仅master机器需要操作

获取镜像列表

kubeadm config images list
由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内镜像站获取。
首先输出kubeadm默认配置:
kubeadm config print init-defaults > kubeadm-init.yaml 将imageRepository的值修改成 registry.cn-hangzhou.aliyuncs.com/google_containers 或改成gcr.io/google_containers

拉取镜像

sudo kubeadm config images pull --config kubeadm-init.yaml

或者跳过以上步骤,不使用配置文件直接通过命令拉取

sudo kubeadm config images pull --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers  
复制代码

获取镜像列表后可以通过下面的脚本get-images.sh从国内获取:

images=(  # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本    
    kube-apiserver:v1.17.3
    kube-controller-manager:v1.17.3
    kube-scheduler:v1.17.3
    kube-proxy:v1.17.3
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)  
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
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
复制代码

初始化master

sudo kubeadm init --image-repository=gcr.io/google_containers
若需指定pod网络地址块加入如下参数,请注意不要与宿主机所在网络地址块冲突
--pod-network-cidr=10.0.0.0/16
注意初始化master后会输出node加入到集群中的token,以下token根据自己的集群输出会有所不同,后期可以通过kubeadm token create --print-join-command命令生成 :

kubeadm join 192.168.2.107:6443 --token u59vc3.1x0k41qw6ygg969h \
    --discovery-token-ca-cert-hash sha256:efb58a0a6d502f49049d04f9d9c532a32b449b7498f4746021671edcf95d4160
复制代码

普通用户设置权限

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

安装flannel网络

注意raw.githubusercontent.com有访问频率限制

curl -k  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml >>kube-flannel.yml
kubectl apply -f kube-flannel.yml
复制代码

node部分

配置好apt源即可

安装必要的软件

sudo apt-get install docker.io kubeadm kubelet -y
根据master在kubeadm init 步骤得到的加入节点命令加入到集群中

sudo kubeadm join 192.168.2.107:6443 --token dytw66.s6w4iifft8y0nl61     --discovery-token-ca-cert-hash sha256:d8a5ce9c29455b516620779e49069b9245df3a7c13686f421fdc82f958363304
复制代码

如果提示加入时10250端口被占用,这是之前初始化过node节点但未成功加入集群导致解决方法

sudo kubeadm reset
复制代码

.然后执行 kubeadm join 添加节点到集群

参考:
某云容器服务
xinkunBlog-docker/kubernetes国内源/镜像源解决方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值