2019-12-07 虛擬機 Kubeadm 安裝K8s集群

工作環(huán)境

虛擬機軟禁 VirtualBox
系統(tǒng) Centos7 配置 2 core 2G 3臺

1.Docker安裝

刪除docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

配置阿里yum源

### 安裝yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

### 添加阿里yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看docker版本

yum list docker-ce --showduplicates

安裝docker

sudo yum install docker:版本
#explame
sudo yum install docker-ce-18.06.3.ce

設(shè)置鏡像加速

登錄:https://cr.console.aliyun.com ,選擇鏡像加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"]
}
EOF

啟動docker

systemctl enable docker && systemctl start docker

安裝命令補全

yum -y install bash-completion
source /etc/profile.d/bash_completion.sh

三臺節(jié)點機器都需要安裝docker 步驟同上

2.配置Master節(jié)點

修改主機名

hostnamectl set-hostname master
cat /etc/hostname

修改hosts文件

cat >> /etc/hosts << EOF
192.168.3.233    master
192.168.3.234    node01
192.168.3.235    node02
EOF

驗證mac地址、UUID

cat /sys/class/net/ens33/address
cat /sys/class/dmi/id/product_uuid

禁用swap

# 當前進程禁用
swapoff -a
# 永久禁用
sed -i.bak '/swap/s/^/#/' /etc/fstab

修改內(nèi)核參數(shù)

# 臨時修改
sysctl net.bridge.bridge-nf-call-iptables=1
sysctl net.bridge.bridge-nf-call-ip6tables=1
# 永久修改
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf

修改Cgroup Dirver

more /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
# 生效
systemctl daemon-reload & systemctl restart docker

設(shè)置Kubernetes源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum clean all
yum -y makecache
  • [] 中括號中的是repository id榨呆,唯一,用來標識不同倉庫
  • name 倉庫名稱钉赁,自定義
  • baseurl 倉庫地址
  • enable 是否啟用該倉庫,默認為1表示啟用
  • gpgcheck 是否驗證從該倉庫獲得程序包的合法性眠副,1為驗證
  • repo_gpgcheck 是否驗證元數(shù)據(jù)的合法性 元數(shù)據(jù)就是程序包列表荚醒,1為驗證
  • gpgkey=URL 數(shù)字簽名的公鑰文件所在位置,如果gpgcheck值為1哩牍,此處就需要指定gpgkey文件的位置,如果gpgcheck值為0就不需要此項了

查看版本

yum list kubelet --showduplicates | sort -r 

安裝 kebelet令漂、kubeadm膝昆、kubectl

 yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2

kubelet 運行在集群所有節(jié)點上,用于啟動Pod和容器等對象的工具
kubeadm 用于初始化集群叠必,啟動集群的命令工具
kubectl 用于和集群通信的命令行荚孵,通過kubectl可以部署和管理應(yīng)用,查看各種資源纬朝,創(chuàng)建收叶、刪除和更新各種組件

啟動Kubelet

systemctl enable kubelet && systemctl start kubelet

kubelet 命令補全

echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile 

下載鏡像Shell腳本

more image.sh 
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.14.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
  docker pull $url/$imagename
  docker tag $url/$imagename k8s.gcr.io/$imagename
  docker rmi -f $url/$imagename
done

下載鏡像

sh image.sh
docker images

初始化Master

kubeadm init --apiserver-advertise-address 192.168.3.233 --pod-network-cidr=10.244.0.0/16

配置完成后最后一行會有一個kubeadm join命令,后需要這個命令加入集群中

加載環(huán)境變量

root賬號

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source .bash_profile

非Root賬號

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

安裝Pod網(wǎng)絡(luò)(flannel)

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

master節(jié)點配置

taint:污點的意思共苛。如果一個節(jié)點被打上了污點判没,那么pod是不允許運行在這個節(jié)點上面的

刪除master節(jié)點默認污點

默認情況下集群不會在master上調(diào)度pod,如果偏想在master上調(diào)度Pod隅茎,可以執(zhí)行如下操作:

查看污點:

 kubectl describe node master|grep -i taints

刪除默認污點:

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

污點機制

kubectl taint node [node] key=value[effect]   
     其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
      NoSchedule: 一定不能被調(diào)度
      PreferNoSchedule: 盡量不要調(diào)度
      NoExecute: 不僅不會調(diào)度, 還會驅(qū)逐Node上已有的Pod

設(shè)置污點

kubectl taint node master key1=value1:NoSchedule
kubectl describe node master|grep -i taints

刪除污點

kubectl taint nodes master  key1- 
kubectl describe node master|grep -i taints

Node節(jié)點安裝

1. 安裝kubelet澄峰、kubeadm和kubectl

同master節(jié)點

2. 下載鏡像

同master節(jié)點

3. 加入集群

以下操作master上執(zhí)行

[root@master ~]# kubeadm token list
TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
j5eoyz.zu0x6su7wzh752b3   <invalid>   2019-06-04T17:40:41+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

發(fā)現(xiàn)之前初始化時的令牌已過期

3.2 生成新的令牌

[root@master ~]# kubeadm token create
1zl3he.fxgz2pvxa3qkwxln

3.3 生成新的加密串

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'

3.4 node節(jié)點加入集群

在node節(jié)點上分別執(zhí)行如下操作:

[root@node01 ~]# kubeadm join 172.27.9.131:6443 --token 1zl3he.fxgz2pvxa3qkwxln  --discovery-token-ca-cert-hash sha256:5f656ae26b5e7d4641a979cbfdffeb7845cc5962bbfcd1d5435f00a25c02ea50

Dashboard安裝

1.下載Yaml

wget  https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/kubernetes-dashboard.yaml

其他版本github地址:https://github.com/kubernetes/dashboard/releases

2.配置Yaml

2.1 修改鏡像地址

sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml

2.2訪問外網(wǎng)

sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml

2.3 提示tls問題

image.png

2.4新增管理員賬號

cat >> kubernetes-dashboard.yaml << EOF
---
# ------------------- dashboard-admin ------------------- #
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin
  namespace: kube-system

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: dashboard-admin
subjects:
- kind: ServiceAccount
  name: dashboard-admin
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
EOF

部署Dashboard

kubectl apply -f kubernetes-dashboard.yaml 

狀態(tài)查看

kubectl get deployment kubernetes-dashboard -n kube-system
kubectl get pods -n kube-system -o wide
kubectl get services -n kube-system

令牌查看

kubectl describe secrets -n kube-system dashboard-admin

訪問

https://NodeIP:30001

用https scheme訪問,否則無法訪問辟犀!

集群測試

kubectl run httpd-app --image=httpd --replicas=3
cat >> nginx.yml << EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      restartPolicy: Always
      containers:
      - name: nginx
        image: nginx:latest
EOF
 kubectl apply -f nginx.yml 

防止丟失俏竞,轉(zhuǎn)自:https://blog.51cto.com/3241766/2405624

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堂竟,隨后出現(xiàn)的幾起案子魂毁,更是在濱河造成了極大的恐慌,老刑警劉巖跃捣,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漱牵,死亡現(xiàn)場離奇詭異夺蛇,居然都是意外死亡疚漆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娶聘,“玉大人闻镶,你說我怎么就攤上這事⊥枭” “怎么了铆农?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狡耻。 經(jīng)常有香客問我墩剖,道長,這世上最難降的妖魔是什么夷狰? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任岭皂,我火速辦了婚禮,結(jié)果婚禮上沼头,老公的妹妹穿的比我還像新娘爷绘。我一直安慰自己,他們只是感情好进倍,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布土至。 她就那樣靜靜地躺著,像睡著了一般猾昆。 火紅的嫁衣襯著肌膚如雪陶因。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天垂蜗,我揣著相機與錄音坑赡,去河邊找鬼。 笑死么抗,一個胖子當著我的面吹牛毅否,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝇刀,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼螟加,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吞琐?” 一聲冷哼從身側(cè)響起捆探,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎站粟,沒想到半個月后黍图,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡奴烙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年助被,在試婚紗的時候發(fā)現(xiàn)自己被綠了剖张。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡揩环,死狀恐怖搔弄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丰滑,我是刑警寧澤顾犹,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站褒墨,受9級特大地震影響炫刷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郁妈,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一柬唯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圃庭,春花似錦锄奢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至书在,卻和暖如春灰伟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儒旬。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工栏账, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栈源。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓挡爵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甚垦。 傳聞我的和親對象是個殘疾皇子茶鹃,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容