使用kubeadm 部署 k8s集群(ubuntu)

a安装docker

设置存储库

sudo apt update

sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

  

添加官方GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置稳定的存储库

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

安装docker引擎

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

设置docker引擎的cgroup driver为systemd

设置 /etc/docker/daemon.json

为:
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}

重启docker:
systemctl restart docker

安装k8s

关闭防火墙

ufw disable

关闭swap

swapoff -a  # 临时

sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

设置主机名

hostnamectl set-hostname <hostname>

在master中添加

cat >> /etc/hosts << EOF
192.168.153.150 k8smaster
192.168.153.151 k8snode1
192.168.153.152 k8snode2
EOF

将桥接的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  # 生效

同步时间

apt install ntpdate

# 将系统时间与网络同步
ntpdate cn.pool.ntp.org

#将时间写入硬件
hwclock --systohc

安装kubectl kubeadm kubelet

apt-get update && apt-get install -y apt-transport-https

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

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  

apt-get update

apt-get install -y kubelet kubeadm kubectl

重启kubelet

systemctl daemon-reload
systemctl restart kubelet

部署k8s master节点

kubeadm init \
  --apiserver-advertise-address=192.168.153.150 \
  --image-repository registry.aliyuncs.com/google_containers \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16


--apiserver-advertise-address: API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口

--image-repository: 指定阿里镜像仓库

--service-cidr: 默认值:"10.96.0.0/12",为服务的虚拟 IP 地址另外指定 IP 地址段

--pod-network-cidr: 指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRs。



安装失败,执行以下命令,重新安装: kubeadm reset

如果是报某些镜像找不到,可以参考一下解决方案:
例如报错:
kubeadm init:failed to pull image coredns:v1.8.0: error
解决方法:

docker pull coredns/coredns:1.8.0

docker tag coredns/coredns:1.8.0 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

配置运行kubectl

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

查看节点:
kubectl get nodes

加入kube node

kubeadm join 192.168.1.11:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

查看token:
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
查看hash:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:
kubeadm token create --print-join-command

部署cni组件

下载文件:
curl https://docs.projectcalico.org/archive/v3.20/manifests/canal.yaml -O

安装flannel网络:
kubectl apply -f canal.yml 

检查:
kubectl get pods -n kube-system

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值