Skip to content

Commit

Permalink
Modified document of deploying Kubernetes with kubeadm. (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
crazytaxii authored and wu-wenxiang committed Jan 7, 2020
1 parent f682ae4 commit 48bf1b1
Showing 1 changed file with 57 additions and 34 deletions.
91 changes: 57 additions & 34 deletions doc/deploy-k8s-manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,24 @@
```bash
sudo curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```

2. 安装 docker

```bash
sudo yum install docker-ce -y
```
3. 启动 docker

3. 配置 Docker 使用 systemd 作为默认 Cgroup 驱动

```bash
cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
```
4. 启动 docker
```bash
sudo systemctl start docker && sudo systemctl enable docker
Expand Down Expand Up @@ -45,37 +57,47 @@
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enable=1
```
2. 安装 kubeadm 等
```bash
sudo yum install -y kubelet kubeadm kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes # https://github.com/kubernetes/kubeadm/issues/954
```
3. load k8s image 离线镜像
```console
3. 设置 kubelet 开机自启动
```bash
systemctl enable --now kubelet
```
4. load k8s image 离线镜像(可选)
```bash
# 假设 k8simg.tar 为 docker image 的压缩包,离线提供。
# sudo docker load < k8simg.tar
sudo docker load < k8simg.tar
```
[下载链接](https://seafile.sh.99cloud.net/f/829d5212ca404db2a908/?dl=1)
4. 关闭 swap 分区(如果有的话)
[下载链接](https://seafile.sh.99cloud.net/f/829d5212ca404db2a908/?dl=1)
```console
# swapoff -a
5. 关闭 swap 分区(如果有的话)
```bash
swapoff -a
# 注释掉 /etc/fstab 中的自动挂载。
```
5. 设置内核参数
```
6. 设置内核参数
```console
# 使用 root 账户,或者使用 sudo 执行以下命令。
[root@k8s-master ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
0
[root@k8s-master ~]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
0
#如果这两个值为 1,则不需要操作,如果是 0,按照如下修改
echo "net.bridge.bridge-nf-call-iptables = 1" >>/etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf
#使生效
# 如果这两个值为 1,则不需要操作,如果是 0,按照如下修改
[root@k8s-master ~]# echo "net.bridge.bridge-nf-call-iptables = 1" >>/etc/sysctl.conf
[root@k8s-master ~]# echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf
# 使生效
[root@k8s-master ~]# sysctl -p
```
Expand All @@ -84,13 +106,13 @@
1. 使用 kubeadm 初始化集群
```bash
#使用的是flannel网络
# 网络插件使用的是 flannel
kubeadm init --pod-network-cidr=10.244.0.0/16
```
2. 根据提示拷贝配置文件到对应的目录
``` bash
```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Expand All @@ -101,13 +123,14 @@
```bash
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml
```
4. 检查部署之后的环境
```
# kubectl get nodes
```console
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
openshift2.shared Ready master 69m v1.15.3
[root@openshift2 bin]# kubectl get pods --all-namespaces
[root@k8s-master ~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-5c98db65d4-5wgb6 1/1 Running 0 68m
kube-system coredns-5c98db65d4-fv6nb 1/1 Running 0 68m
Expand All @@ -117,34 +140,34 @@
kube-system kube-flannel-ds-amd64-vfhn2 1/1 Running 0 63m
kube-system kube-proxy-vvgjv 1/1 Running 0 68m
kube-system kube-scheduler-openshift2.shared 1/1 Running 0 67m
[root@openshift2 bin]#
```
## 添加节点
1. 在另一台机器上,完成上述“部署k8s集群"之前所有操作
1. 在另一台机器上,完成上述“部署 k8s 集群”之前所有操作
2. 在 master 执行 kubeadm init 之后会有加入集群的提示,如下图
![join](../image/join.png)
![join](../images/join.png)
4. 内容如下:
3. 内容如下:
```console
[centos@k8s-slave ~]$ kubeadm join 192.168.11.15:6443 --token 8lrj88.951kc5gn2hgrppts \--discovery-token-ca-cert-hash sha256:eaf73dff349a3e2b7ba91961a89eed4617746fb8d85d7e79761b32106cb640b6
```bash
kubeadm join 192.168.11.15:6443 --token 8lrj88.951kc5gn2hgrppts \
--discovery-token-ca-cert-hash sha256:eaf73dff349a3e2b7ba91961a89eed4617746fb8d85d7e79761b32106cb640b6
```
5. 如果没有保存上一个步骤,则执行如下命令获取( 在 master 节点上 )
4. 如果没有保存上一个步骤,则执行如下命令获取( 在 master 节点上 )
```console
#获取token
[centos@k8s-master ~]$ kubeadm token list
#获取 ca 的 hash 值
[centos@k8s-master ~]$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
# 获取token
[centos@k8s-master ~]# kubeadm token list
# 获取 ca 的 hash 值
[centos@k8s-master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
```
6. 拼接join命令
5. 拼接 join 命令
```bash
#使用上面查询到的结果,分别替代 `$token` 和 `$ca_hash` 值
kubeadm join $master_ip:6443 --token $token --discovery-token-ca-cert-hash sha256:$ca_hash
# 使用上面查询到的结果,分别替代 `$token``$ca_hash`
[centos@k8s-worker ~]# kubeadm join $master_ip:6443 --token $token --discovery-token-ca-cert-hash sha256:$ca_hash
```

0 comments on commit 48bf1b1

Please sign in to comment.