首先进入系统配置使用root用户
passwd root
键入密码
通过su
并输入密码进入root
用户
Docker
- 安装apt-get系统工具
apt-get update
- 安装允许apt通过HTTPS使用存储库
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
- 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
- 写入软件源信息
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
- 更新并安装Docker-CE
apt-get -y update
apt-get -y install docker-ce
- 配置加速器
使用阿里云
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://l6lt06g1.mirror.aliyuncs.com"
]
}
这里的地址替换为自己的
systemctl daemon-reload
systemctl restart docker
Kuberneters
- kubernetes必备工具
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat << EOF >/etc/apt/sources.list.d/kubenetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update && apt install -y kubelet kubeadm kubectl
- 同步时间
-
设置时区
dpkg-reconfigure tzdata
选择亚洲上海
-
时间同步
apt install ntpdate #设置系统时间与网络同步(cn.pool.ntp.org位于中国的公共NTP服务器) ntpdate cn.pool.ntp.org #将系统时间写入硬件时间 hwclock --systohc
- 固定主机名
apt install cloud-init
vim /etc/cloud/cloud.cfg
修改preserve_hostname: true
- 设置固定ip
vim /etc/netplan/...yaml
network:
ethernets:
ens33: # 网卡
addresses: [192.168.8.128/24] # IP及掩码
gateway4: 192.168.8.255 # 网关
nameservers:
addresses: [223.5.5.5] # DNS
version: 2
netplan apply
使之生效
- 设置主机名
hostnamectl set-hostname kubernetes-node2
cat >> /etc/hosts << EOF
192.168.8.139 kubernetes-node2
EOF
修改各个节点的主机名,不要重名。
- 主节点安装k8s
cd /usr/local/
mkdir -p kuberneters/cluster
cd kubernetes/cluster
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
修改kubeadm.yml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.8.120
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: kubernetes-master
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.19.4
networking:
dnsDomain: cluster.local
podSubnet: "10.244.0.0/16"
serviceSubnet: 10.96.0.0/12
scheduler: {}
重要
advertiseAddress: 192.168.8.120 # 改为自己的IP
imageRepository: registry.aliyuncs.com/google_containers # 设置镜像仓库
podSubnet: "10.244.0.0/16"
拉取镜像
kubeadm config images pull --config kubeadm.yml
安装
kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
主节点安装完成
- 从节点安装
在从节点执行如下,请自行替换kubeadm-init.log
中的内容
kubeadm join 192.168.8.120:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:c95005bd338a4e6bec73076b7d095246f61e494a23d6c4691371eff4a1b3a577
即可安装成功
root@kubernetes-master:/# kubectl get node
NAME STATUS ROLES AGE VERSION
kubernetes-master NotReady master 30m v1.19.4
kubernetes-node1 NotReady <none> 29m v1.19.4
kubernetes-node2 NotReady <none> 4m39s v1.19.4
如果想在从节点也可以执行kubectl get node
,需要将主节点/etc/kubernetes/admin.conf
复制到从节点相应目录下,并执行如下
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /root/.bash_profile
source /root/.bash_profile
- 安装calico
去calico官网可以查看具体执行步骤,这里直接
kubectl apply -f https://docs.projectcalico.org/archive/v3.12/manifests/calico.yaml
即可安装成功😄